Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤

简介: Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤

IOC之Bean的生命周期

实验22:创建带有生命周期方法的bean

public class Person {
  private Integer id;
  private String name;
  public void init() {
    System.out.println("这是person对象的初始化方法");
  }
  public void destroy() {
    System.out.println("这是person对象的销毁方法");
  }

配置信息:

 <!-- 
  init-method="init"    初始化方法 在对象被创建之后
  destroy-method="destroy"  销毁方法  在容器关闭的时候执行
  -->
<bean id="p24" class="com.pojo.Person" init-method="init" destroy-method="destroy">
  <property name="id" value="24"></property>
</bean>

测试代码:

@Test
public void test13() throws Exception {
  ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  System.out.println(applicationContext.getBean("p24"));
  applicationContext.close();
}

Bean的后置处理器BeanPostProcessor

bean的后置处理器,可以在bean对象初始化之前或之后做一些工作。

要使用bean的后置处理器,需要实现这个接口并配置。

实验23:测试bean的后置处理器

person对象,一定要有初始化方法

public class Person {
  private Integer id;
  private String name;
  private Car car;
  public void init() {
    System.out.println("这是person对象的初始化方法");
  }

后置处理器对象

public class MyBeanPostProcessor implements BeanPostProcessor {
  @Override
  public Object postProcessAfterInitialization(Object bean, String id) throws BeansException {
    System.out.println("初始化之后执行  bean => " + bean + ", id => " + id);
    return bean;
  }
  /**
   * bean是当前正在初始化的对象
   * id 是当前正在初始化对象的id值 
   */
  @Override
  public Object postProcessBeforeInitialization(Object bean, String id) throws BeansException {
    System.out.println("初始化之前执行  bean => " + bean + ", id => " + id);
    return bean;
  }
}

配置信息:

 <!-- 
  init-method="init"    初始化方法 在对象被创建之后
  destroy-method="destroy"  销毁方法  在容器关闭的时候执行
  -->
<bean id="p24" class="com.pojo.Person" init-method="init" destroy-method="destroy">
  <property name="id" value="24"></property>
</bean>
<!-- 配置bean的后置处理器 -->
<bean class="com.pojo.MyBeanPostProcessor" />

测试的代码:

@Test
public void test13() throws Exception {
  ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean2.xml");
  System.out.println(applicationContext.getBean("p24"));
  applicationContext.close();
}

对于单例的bean,生命周期有11个步骤:

1.instantiate bean对象实例化,bean对象实例化,是在加载配置文件的时候实例的。即,我们启动spring容器的时候,加载配置文件,此时就实例化bean了。

2.populate properties 封装属性

3.如果Bean实现BeanNameAware, 执行 setBeanName

4.如果Bean实现BeanFactoryAware 或者 ApplicationContextAware,设置工厂 setBeanFactory 或者上下文对象 setApplicationContext

5.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessBeforeInitialization(此点常常用来增强bean)

6.如果Bean实现InitializingBean 执行 afterPropertiesSet

7.调用 指定初始化方法 init

8.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessAfterInitialization(此点常常用来增强bean)

9.执行业务处理

10.如果Bean实现 DisposableBean 执行 destroy

11.调用 指定销毁方法

相关文章
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
943 26
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
424 12
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
558 12
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
497 6
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
329 2
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
250 0
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细解析Spring Bean的生命周期及其核心概念,并深入源码分析。Spring Bean是Spring框架的核心,由容器管理其生命周期。从实例化到销毁,共经历十个阶段,包括属性赋值、接口回调、初始化及销毁等。通过剖析`BeanFactory`、`ApplicationContext`等关键接口与类,帮助你深入了解Spring Bean的管理机制。希望本文能助你更好地掌握Spring Bean生命周期。
1417 1
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细介绍了Spring框架中的核心概念——Spring Bean的生命周期,包括实例化、属性赋值、接口回调、初始化、使用及销毁等10个阶段,并深入剖析了相关源码,如`BeanFactory`、`DefaultListableBeanFactory`和`BeanPostProcessor`等关键类与接口。通过理解这些核心组件,读者可以更好地掌握Spring Bean的管理和控制机制。
1734 1
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
666 11

热门文章

最新文章

下一篇
开通oss服务