当前位置:   article > 正文

spring 中的IOC 操作 Bean 管理(bean 生命周期)_spring ioc有管理bean的销毁吗

spring ioc有管理bean的销毁吗
1 、生命周期
1 )从对象创建到对象销毁的过程
2 bean 生命周期
1 )通过构造器创建 bean 实例(无参数构造)
2 )为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
3 )调用 bean 的初始化的方法(需要进行配置初始化的方法)
4 bean 可以使用了(对象获取到了)
5 )当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
3 、演示 bean 生命周期
  1. package net.cybclass.sp.domain;
  2. /**
  3. * @author: wangxiaobo
  4. * @create: 2020-10-04 19:15
  5. **/
  6. public class Orders {
  7. //无参数构造
  8. public Orders() {
  9. System.out.println("第一步 执行无参数构造创建 bean 实例");
  10. }
  11. private String oname;
  12. public void setOname(String oname) {
  13. this.oname = oname;
  14. System.out.println("第二步 调用 set 方法设置属性值");
  15. }
  16. //创建执行的初始化的方法
  17. public void initMethod() {
  18. System.out.println("第三步 执行初始化的方法");
  19. }
  20. //创建执行的销毁的方法
  21. public void destroyMethod() {
  22. System.out.println("第五步 执行销毁的方法");
  23. }
  24. }
  1. <bean id="orders" class="net.cybclass.sp.domain.Orders" init-method="initMethod" destroy-method="destroyMethod">
  2. <property name="oname" value="手机"></property>
  3. </bean>

 

  1. /**
  2. * @author: wangxiaobo
  3. * @create: 2020-10-03 15:11
  4. **/
  5. public class app {
  6. public static void main(String[] args) {
  7. // ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
  8. // Video video=(Video) applicationContext.getBean("video");
  9. // VideoOrder videoOrder= (VideoOrder) applicationContext.getBean("videoOrder");
  10. // System.out.println(video.getTitle());
  11. // System.out.println(videoOrder.getVideo());
  12. // System.out.println(video.getChapterList());
  13. // System.out.println(video.getVideoMap());
  14. // Video2 video=(Video2) applicationContext.getBean("video2");
  15. // System.out.println(video);
  16. ClassPathXmlApplicationContext context =
  17. new ClassPathXmlApplicationContext("applicationContext.xml");
  18. Orders orders = context.getBean("orders", Orders.class);
  19. System.out.println("第四步 获取创建 bean 实例对象");
  20. System.out.println(orders);
  21. //手动让 bean 实例销毁
  22. context.close();
  23. }
  24. }

 运行:

 

4 bean 的后置处理器, bean 生命周期有七步
1 )通过构造器创建 bean 实例(无参数构造)
2 )为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)
(3)把 bean 实例传递 bean 后置处理器的方法 postProcessBe
4 )调用 bean 的初始化的方法(需要进行配置初始化的方法)
5 )把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization
6 bean 可以使用了(对象获取到了)
7 )当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)
5 、演示添加后置处理器效果
1 )创建类,实现接口 BeanPostProcessor ,创建后置处理器
  1. package net.cybclass.sp.domain;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.beans.factory.config.BeanPostProcessor;
  4. /**
  5. * @author: wangxiaobo
  6. * @create: 2020-10-04 19:26
  7. **/
  8. public class MyBeanPost implements BeanPostProcessor {
  9. @Override
  10. public Object postProcessBeforeInitialization(Object bean, String beanName)
  11. throws BeansException {
  12. System.out.println("在初始化之前执行的方法");
  13. return bean;
  14. }
  15. @Override
  16. public Object postProcessAfterInitialization(Object bean, String beanName)
  17. throws BeansException {
  18. System.out.println("在初始化之后执行的方法");
  19. return bean;
  20. }
  21. }
  1. <!--配置后置处理器-->
  2. <bean id="myBeanPost" class="net.cybclass.sp.domain.MyBeanPost"></bean>

 运行:

 

 

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/66378
推荐阅读
相关标签
  

闽ICP备14008679号