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的对象创建的细节的主要内容,如果未能解决你的问题,请参考以下文章