当前位置:首页 >> 硬件技术 >> 【Spring】bean的生命周期,oppot9手机

【Spring】bean的生命周期,oppot9手机

cpugpu芯片开发光刻机 硬件技术 2
文件名:【Spring】bean的生命周期,oppot9手机 【Spring】bean的生命周期 1.具体的生命周期过程

bean对象创建(调用无参构造器)

给bean对象设置属性

bean对象初始化之前操作(由bean的后置处理器负责)

bean对象初始化(需在配置bean时指定初始化方法)

bean对象初始化之后操作(由bean的后置处理器负责)

bean对象就绪可以使用

bean对象销毁(需在配置bean时指定销毁方法)

IOC容器关闭

2.User类: package com.zh.spring.pojo;public class User {private Integer id;private String username;private String password;private Integer age;public User() {//调用无参构造器实例化System.out.println("生命周期1:实例化");}public User(Integer id, String username, String password, Integer age) {this.id = id;this.username = username;this.password = password;this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {//使用setter方法进行赋值System.out.println("生命周期2:依赖注入");this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +'}';}public void initMethod(){//初始化方法System.out.println("生命周期3:初始化");}public void destroyMethod(){//销毁方法System.out.println("生命周期4:销毁");}}

注意:其中的initMethod()destroyMethod(),可以通过配置bean指定为初始化和销毁的方法

3.对应的bean: <bean id="user" class="com.zh.spring.pojo.User" init-method="initMethod" destroy-method="destroyMethod"><property name="id" value="1"></property><property name="username" value="admin"></property><property name="age" value="21"></property><property name="password" value="123456"></property></bean><!-- 将bean的后置处理器放入IOC容器中--><bean id="myBeanPostProcessor" class="com.zh.spring.process.MyBeanPostProcessor"></bean>

注意:初始化时需要通过bean的init-method="initMethod"属性指定初始化的方法

      IOC容器关闭时销毁,需要bean的destroy-method="destroyMethod"属性指定销毁的方法

4.测试类 public class LifeCycleTest {@Testpublic void test(){//ConfigurableApplicationContext:是ApplicationContext的子接口,其中扩展了刷新和关闭ioc容器的方法// ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-lifecycle.xml");ConfigurableApplicationContext ioc = new ClassPathXmlApplicationContext("spring-lifecycle.xml");User user = ioc.getBean(User.class);System.out.println(user);//要想关闭ioc容器,没有直接的close方法,要使用ConfigurableApplicationContextioc.close();}} 5.bean的后置处理器

       bean的后置处理器会在生命周期的初始化前后添加额外的操作,需要实现BeanPostProcessor接口,且配置到IOC容器中,需要注意的是,bean后置处理器不是单独针对某一个bean生效,而是针对IOC容器中所有bean都会执行

public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {//此方法在bean的生命周期初始化之前执行System.out.println("MyBeanPostProcessor---->后置处理器postProcessBeforeInitialization");return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {//此方法在bean的生命周期初始化之后执行System.out.println("MyBeanPostProcessor---->后置处理器postProcessAfterInitialization");return bean;}}

运行结果:

 

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接