Java 3.Spring的对象创建的细节

Posted yuzhenfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 3.Spring的对象创建的细节相关的知识,希望对你有一定的参考价值。

一、id 和name

id:可重复,可以有特殊字符

name:不可重复,不可以有特殊字符

	public void testIdandname() {
		//创建容器
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		//查找对象
		Person p1=(Person) context.getBean("p1");
		Person p2=(Person) context.getBean("p2");
		
		System.out.println(p1);
		System.out.println(p2);
	}

 二、工厂的类型

两种类型工厂

ClassPathXmlApplicationContext    类路径
FileSystemXmlApplicationContext   系统路径
	@Test
	public void ApplicationContext() {
		//创建容器
		ApplicationContext context = new FileSystemXmlApplicationContext("G:\JavaProject\spring-01-hello\src\applicationContext.xml");
		//查找对象
		Person p1=(Person) context.getBean("p1");

		
		System.out.println(p1);

	}

 

三、单例和多例

scope属性

1.默认情况下bean是单例的  scope = “singleton”

2.scope = "prototype"

3. scope = “request”(一个request范围内,是单例,不常用

4. scope = “session”(一个session范围内,是单例,不常用

@Test	
	public void testScope() {
		//创建容器
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");		
          //查找对象 Person p1=(Person) context.getBean("p1"); Person p2=(Person) context.getBean("p1"); //scope = "singleton"是true //scope = "prototype"是false System.out.println(p1==p2); }

 

四、什么时候创建

scope = "prototype"  多例   在容器启动时不创建,当获取时才创建     

scope = “singleton”  单例   在容器启动时创建,只创建一个

 

五、是否延迟加载

 

lazy-init="true"  延迟创建对象   在容器启动时不创建,当获取时才创建 
lazy-init="false"    默认值   不延迟创建对象  在容器启动时立即创建

 

 

 <bean name="p3" class="com.Spring.pojo.Person" scope = "singleton" lazy-init="true"></bean>

 

 

 

六、对象的初始化和销毁

init-method="init"

destroy-method="destroy"

以上是关于Java 3.Spring的对象创建的细节的主要内容,如果未能解决你的问题,请参考以下文章

java知识28 Java封装多测师

JAVA-初步认识-第九章-抽象类-细节

Java中面向对象的三大特性之封装

Java 封装

Java 封装

Java 封装