spring内部创建对象的方式(或bean实例化方式)
2014-01-15 00:13
435 查看
spring内部创建对象的方式(或bean实例化方式)
方式一:采用默认构造函数创建对象(重点)
<bean id="helloWorld" class="cn.zzu.spring.bean.HelloWorld"></bean>
方式二:采用静态工厂的方式
首先提供一个工厂类
配置静态工厂方法即把其放入spring容器
第三种方式:采用实例工厂方式
创建一个类对象如下
配置文件的写法
spring容器创建对象的时机
1、在默认的情况下(lazy-init='default/false'),在spring容器初始化的时候创建对象
2、lazy-init为true的情况
当客户端调用context.getBean的方式时创建对象
3、说明:
1、lazy-init为default/false的情况,可以过早的发现错误,过早的进行修改
lazy-init为true,不能过早发现错误
2、如果一个bean中存放过大的数据,我们不希望该数据过早的加入到内存中,希望的情况是什么时候用什么时候加载
这个时候用lazy-init为true比较好
Bean的作用域
企业开发时:最常用 singleton
和 prototype
SingletonBean在容器初始化时,就构造
PrototypeBean在使用Bean (getBean) 才去构造
1、默认情况下,spring容器中的bean是单例模式(singleton)
2、prototype 原型模式 多实例
3、如果一个bean的scope为"prototype",那么lazy-init无论为什么值,都是getBean时才要创建对象
4、struts2的action是多实例,所以如果把action放入到spring容器中,action在spring容器中的配置必须是
scope="prototype"
Bean的初始化与销毁
spring容器的init和detroy
在spring的配置文件中
执行顺序:
1、启动spring容器
2、采用默认的构造函数创建对象
3、执行init-method指向的方法
该方法是由spring容器来调用的,并且是在执行完构造函数之后立刻调用的
4、对象调用方法
5、执行destroy-method方法
注:不管是初始化方法还是销毁方法,实际上都是由spring容器内部执行的,但是销毁方式的前提条件:
1、spring容器关闭
2、必须是单例的
方式一:采用默认构造函数创建对象(重点)
<bean id="helloWorld" class="cn.zzu.spring.bean.HelloWorld"></bean>
方式二:采用静态工厂的方式
首先提供一个工厂类
public class HelloWorldFactory { /** * 静态方法 * 创建HelloWorld对象 * @return */ public static HelloWorld getInstance(){ return new HelloWorld(); } }
配置静态工厂方法即把其放入spring容器
<bean id="helloWorld2" class="cn.zzu.spring.bean.HelloWorldFactory" factory-method="getInstance"></bean>
第三种方式:采用实例工厂方式
创建一个类对象如下
public class HelloWorld2Factory { public HelloWorld getInstance(){ return new HelloWorld(); } }
配置文件的写法
<bean id="helloWorldFactory" class="cn.zzu.spring.bean.HelloWorld2Factory"></bean> <!-- 利用实例工厂模式创建对象 factory-bean 指向某一个工厂 factory-method 工厂方法 --> <bean id="helloWorld3" factory-bean="helloWorldFactory" factory-method="getInstance"></bean>
spring容器创建对象的时机
1、在默认的情况下(lazy-init='default/false'),在spring容器初始化的时候创建对象
2、lazy-init为true的情况
当客户端调用context.getBean的方式时创建对象
3、说明:
1、lazy-init为default/false的情况,可以过早的发现错误,过早的进行修改
lazy-init为true,不能过早发现错误
2、如果一个bean中存放过大的数据,我们不希望该数据过早的加入到内存中,希望的情况是什么时候用什么时候加载
这个时候用lazy-init为true比较好
Bean的作用域
企业开发时:最常用 singleton
和 prototype
SingletonBean在容器初始化时,就构造
PrototypeBean在使用Bean (getBean) 才去构造
1、默认情况下,spring容器中的bean是单例模式(singleton)
2、prototype 原型模式 多实例
3、如果一个bean的scope为"prototype",那么lazy-init无论为什么值,都是getBean时才要创建对象
4、struts2的action是多实例,所以如果把action放入到spring容器中,action在spring容器中的配置必须是
scope="prototype"
Bean的初始化与销毁
spring容器的init和detroy
在spring的配置文件中
<bean id="helloWorld" class="cn.itcast.spring1107.initdestroy.bean.HelloWorld" init-method="init" destroy-method="destroy"></bean>
执行顺序:
1、启动spring容器
2、采用默认的构造函数创建对象
3、执行init-method指向的方法
该方法是由spring容器来调用的,并且是在执行完构造函数之后立刻调用的
4、对象调用方法
5、执行destroy-method方法
注:不管是初始化方法还是销毁方法,实际上都是由spring容器内部执行的,但是销毁方式的前提条件:
1、spring容器关闭
2、必须是单例的
相关文章推荐
- spring容器创建对象的3种方式(bean的实例化)
- spring容器创建对象的3种方式(bean的实例化)
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- spring-01 spring的bean管理(使用配置文件方式创建对象 附代码)
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- spring在配置文件中bean对象创建的三种方式
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- Spring(IOC) 对象创建三种方式、对象bean起别名
- spring-02 spring的bean管理(使用注解方式创建对象 附代码)
- Spring 框架 ---->> bean实例化方式
- Spring Boot 普通类调用Bean对象的一种方式
- spring bean的三种实例化方式
- Spring容器Bean的实例化方式和声明周期
- Java中创建(实例化)对象的五种方式
- Spring 使new方法创建的对象可以引用spring管理的bean.
- Spring_IOC注解方式装配Bean对象
- 一步一步深入spring(2)-三种方式来实例化bean
- Spring中bean的实例化方式与IOC容器总结
- spring prototype的每个对象中中创建singleton的bean
- Spring默认创建的bean对象是单例模式吗?