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.调用 指定销毁方法

目录
打赏
0
0
0
0
75
分享
相关文章
Spring框架初识
Spring 是一个分层的轻量级开源框架,核心功能包括控制反转(IOC)和面向切面编程(AOP)。主要模块有核心容器、Spring 上下文、AOP、DAO、ORM、Web 模块和 MVC 框架。它通过 IOC 将配置与代码分离,简化开发;AOP 提供了声明性事务管理等增强功能。
53 21
Spring框架初识
|
20天前
|
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
110 26
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
116 29
通过springboot框架创建对象(一)
在Spring Boot中,对象创建依赖于Spring框架的核心特性——控制反转(IoC)和依赖注入(DI)。IoC将对象的创建和管理交由Spring应用上下文负责,开发者只需定义依赖关系。DI通过构造函数、setter方法或字段注入实现依赖对象的传递。Spring Boot的自动配置机制基于类路径和配置文件,自动为应用程序配置Spring容器,简化开发过程。Bean的生命周期包括定义扫描、实例化、依赖注入、初始化和销毁回调,均由Spring容器管理。这些特性提高了开发效率并简化了代码维护。
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
理解和解决Spring框架中的事务自调用问题
事务自调用问题是由于 Spring AOP 代理机制引起的,当方法在同一个类内部自调用时,事务注解将失效。通过使用代理对象调用、将事务逻辑分离到不同类中或使用 AspectJ 模式,可以有效解决这一问题。理解和解决这一问题,对于保证 Spring 应用中的事务管理正确性至关重要。掌握这些技巧,可以提高开发效率和代码的健壮性。
143 13
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
Spring的使用-Bean对象的储存和获取/Bea对象的作用域与生命周期
Spring的使用-Bean对象的储存和获取/Bea对象的作用域与生命周期
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
163 0
【Spring原理探索】深入认识对象生命周期之BeanPostProcessor
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等