Spring--bean的生命周期

本文内容纲要:Spring--bean生命周期" title="bean的生命周期">bean的生命周期

IOC容器中bean的生命周期方法

-Spring IOC容器可以管理bean的生命周期,Spring允许在bean的生命周期的特定点执行定制的任务

-Spring IOC容器对bean的生命周期进行管理的过程:

  • -通过构造器或工厂方法创建bean实例
  • -为bean的属性设置值和对其他bean的引用
  • -调用bean的初始化方法
  • -bean可以使用了
  • -当容器关闭时,调用bean的销毁方法

-在bean的声明里设置init-method和dectory-method属性,为bean指定初始化和销毁方法

创建bean后置处理器

-bean后置处理器允许在调用初始化方法前后对bean进行额外的处理

-bean后置处理器对IOC容器里所有bean实例逐一处理,而非单一实例。其典型应用是:检查bean属性的正确性或根据特定的标准更改bean的属性

-对bean后置处理器而言,需要实现Interface BeanPostProcessor接口。在初始化方法被调用前后,Spring将把每个bean实例分别传递给上述接口的以下两个方法

-postProcessBeforeInitialization

-postProcessAfterInitialization

添加bean后置处理器后bean的生命周期

  • -通过构造器或工厂方法创建bean实例
  • -为bean的属性设置值和对其他bean的引用
  • -将bean实例传递给bean前置处理器的postProcessBeforeInitialization方法
  • -调用bean的初始化方法
  • -将bean实例传递给bean后置处理器的postProcessAfterInitialization方法
  • -bean可以使用了
  • -当容器关闭时,调用bean的销毁方法

bean的配置文件:

 

1 <?xml version="1.0" encoding="UTF-8"?>

2 <beans xmlns="http://www.springframework.org/schema/beans"

3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

5

6 <bean id="car" class="com.yl.cycle.Car"

7 init-method="init" destroy-method="destory">

8 <property name="brand" value="Audi"></property>

9 </bean>

10

11

12 <!-- 实现BeanPostProcessor接口,并且提供

13 Object postProcessBeforeInitialization(Object bean, String beanName) init-method方法之前调用

14 Object postProcessAfterInitialization(Object bean, String beanName) init-method方法之后调用

15 的实现

16 bean:bean实力本身

17 beanName:IOC容器中配置的bean的名字

18 返回值是实际上返回给用户的那个bean,注意:可以在以上两个方法中修改返回的bean,设置返回一个新的bean

19 -->

20 <!-- 配置bean的后置处理器 。 不需要配置id,IOC容器自动识别是一个BeanPostProcessor-->

21 <bean class="com.yl.cycle.MyBeanPostProcessor"></bean>

22

23 </beans>

bean的后置处理器:

1 package com.yl.cycle;

2

3 import org.springframework.beans.BeansException;

4 import org.springframework.beans.factory.config.BeanPostProcessor;

5

6 public class MyBeanPostProcessor implements BeanPostProcessor {

7

8 @Override

9 public Object postProcessAfterInitialization(Object bean, String beanName)

10 throws BeansException {

11 System.out.println("postProcessAfterInitialization: " + bean + ", " + beanName);

12

13 Car car = new Car();

14 car.setBrand("Ford");

15

16 return car;

17 }

18

19 @Override

20 public Object postProcessBeforeInitialization(Object bean, String beanName)

21 throws BeansException {

22 System.out.println("postProcessBeforeInitialization: " + bean + ", " + beanName);

23

24 if ("car".equals(beanName)) {

25

26 }

27

28

29 return bean;

30 }

31

32 }

测试类:

1 package com.yl.cycle;

2

3 import org.springframework.context.ApplicationContext;

4 import org.springframework.context.support.AbstractApplicationContext;

5 import org.springframework.context.support.ClassPathXmlApplicationContext;

6

7 public class CycleMain {

8 public static void main(String[] args) {

9 ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-cycle.xml");

10

11 Car car = (Car)ctx.getBean("car");

12 System.out.println(car);

13

14 //关闭容器

15 ((AbstractApplicationContext) ctx).close();

16 }

17 }

本文内容总结:Spring--bean的生命周期

原文链接:https://www.cnblogs.com/dreamfree/p/4088280.html

以上是 Spring--bean的生命周期 的全部内容, 来源链接: utcz.com/z/362495.html

回到顶部