spring中的IOC 操作 Bean 管理(bean 生命周期)

    科技2022-07-16  113

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

     

    /** * @author: wangxiaobo * @create: 2020-10-03 15:11 **/ public class app { public static void main(String[] args) { // ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); // Video video=(Video) applicationContext.getBean("video"); // VideoOrder videoOrder= (VideoOrder) applicationContext.getBean("videoOrder"); // System.out.println(video.getTitle()); // System.out.println(videoOrder.getVideo()); // System.out.println(video.getChapterList()); // System.out.println(video.getVideoMap()); // Video2 video=(Video2) applicationContext.getBean("video2"); // System.out.println(video); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Orders orders = context.getBean("orders", Orders.class); System.out.println("第四步 获取创建 bean 实例对象"); System.out.println(orders); //手动让 bean 实例销毁 context.close(); } }

     运行:

     

    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 ,创建后置处理器 package net.cybclass.sp.domain; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; /** * @author: wangxiaobo * @create: 2020-10-04 19:26 **/ public class MyBeanPost implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之前执行的方法"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之后执行的方法"); return bean; } } <!--配置后置处理器--> <bean id="myBeanPost" class="net.cybclass.sp.domain.MyBeanPost"></bean>

     运行:

     

     

     
    Processed: 0.010, SQL: 8