bean 实例的生命周期是什么?
bean 实例的生命周期如下:
为了演示spring的生命周期,首先必须要加入spring的相关包。
新建一个SpringBoy类 实现BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean
要注意加入相关的包。新建一个processor类,用于处理bean,叫作bean处理器,在xml中作如下配置:bean class="zpx.life.Processor"/
分别实现它们的方法。并在方法中加入必须的信息,以便后面理解与观察。
在配置文件中配置springboy。指定初使化方法与销毁方法。
新建一个测试类,并指定要加载的xml文件。
运行测试类,得到运行结果如下。
bean的生命周期
Bean的生命周期指的是从一个普通的Java类变成Bean的过程。
对prototype bean来说,当用户getBean获得prototype bean的实例后,IOC容器就不再对当前实例进行管理,而是把管理权交由用户,此后再getBean生成的是新的实例。
常用接口说明:
1、BeanNameAware该接口只有一个方法setBeanName(String name),用来获取bean的 id或者name。
2、BeanFactoryAware该接口只有一个方法setBeanFactory(BeanFactory beanFactory),用来获取 当前环境中的BeanFactory。
3、ApplicationContextAware该接口只有一个方法setApplicationContext(ApplicationContext applicationContext),用来获取,当前环境中的ApplicationContext获取到IOC容器之后,可以对beans进行修改等操作。
EJB的简答题:请简要说明会话bean的生命周期。
客户会话(Client Session)的持续期决定了使用中的会话Bean的存活期,会话Bean仅仅是内存对象,一旦其生存的周边环境遭到破坏,会话Bean也将不复存在。会话Bean实例并不能够在多客户间共享,而且它不表示数据库中的数据。
粗略地看,它同会话(Session)或调用其客户的生命周期类似,供参考
spring中bean的生命周期是怎么样的
spring中bean完整的生命周期:
1,实例化(当我们加载beans.xml文件)实例化到内存。证明:它会调用bean里面的无参构造。
2,设置属性值(调用set方法设置属性)。
3,如果实现了BeanNameAware则调用BeanNameAware接口的setbeanFatroy()方法,获取Bean的id
4,如果实现了BaneFactoryAware则可以获取BeanFactory。,
5,如果实现了ApplicationAware则可以获取ApplicationAware。
6,如果bean和一个后置处理器关联(实现BeanPostProcessor接口),则会自动去调用 postProcessBeforeInitialization
7,如果实现了InitializingBean则会调用afterPropertiesSet方法。
8,如果在配置了bean init-method="init" /就可以在bean中定义自己的初始化方法。
9,如果bean和一个后置处理器关联(实现BeanPostProcessor接口),则会自动去调用 postProcessAfterInitialization
10,使用我们的bean。
11,容器关闭。
12,可以通过实现DisposableBean接口来调用destroy()的销毁方法。
13,可以在配置中,bean destroy-method="destroy",在bean中写销毁方法。
bean的生命周期是什么?
Bean的生命周期是一个很复杂的执行过程,是利用Spring提供的方法定制Bean的创建过程,当一个 Bean被加载到Spring容器时,它就具有了生命,而Spring容器在保证一个Bean能够使用之前,会进行很多工作。
Bean的生命周期主要由容器进行管理,我们可以自定义bean的初始化和销毁方法,容器在bean进行到生命周期的特定时间点,来调用自定义的初始化和销毁方法。
Spring Bean的生命周期只有四个阶段。把这四个阶段和每个阶段对应的扩展点糅合在一起虽然没有问题,但是这样非常凌乱,难以记忆。要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段。
Bean的生命周期演示注意事项:
一个简单的Spring Bean,调用Bean自身的方法和Bean级生命周期接口方法,为了方便演示,它实现了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这4个接口,同时有2个方法,对应配置文件中bean的init-method和destroy-method。
BeanPostProcessor接口包括2个方法postProcessAfterInitialization和postProcessBeforeInitialization,这两个方法的第一个参数都是要处理的Bean对象,第二个参数都是Bean的name。返回值也都是要处理的Bean对象。这里要注意。