Bean的生命周期在项目中的实践

        Bean的生命周期在整个Spring体系都是非常重要的,必须谨记于心。

        BeanPostProcessor接口比较特殊,一般单独实现该接口。Spring中所有的Bean在使用过程中都会执行BeanPostProcessor接口的postProcessBeforeInitialization()方法和postProcessAfterInitialization()方法。BeanPostProcessor是容器级别的,对所有的Bean有效。

        BeanNameAware、BeanFactoryAware等是Bean级别的,对当前类有效。一个Bean可以同时实现这些接口。

        项目中如何实践,项目来源:https://gitee.com/bweird/lenosp.git

        len-web模块中com.len.config包下有三个类(BeanFactoryImpl实现了BeanFactoryAware接口,BeanName实现了BeanNameAware接口,ZBeanFactory实现了BeanPostProcessor接口;setBeanFactory()方法只会在加载BeanFactoryImpl时被调用,setBeanName()方法只会在加载BeanName时被调用,postProcessBeforeInitialization()方法和postProcessAfterInitialization()方法在所有的Bean被加载时都会被调用):

@Configuration
@Slf4j
public class BeanFactoryImpl implements BeanFactoryAware {
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        log.info("BeanFactoryAware------->" + beanFactory);
    }
}
 
@Configuration
@Slf4j
public class BeanName implements BeanNameAware {

    @Override
    public void setBeanName(String name) {
        log.info("BeanNameAware-------->:" + name);
    }
}
@Configuration
@Slf4j
public class ZBeanFactory implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName)
            throws BeansException {
        log.info("对象---" + beanName + "---初始化开始");
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        log.info("对象---" + beanName + "---初始化成功");
        return bean;
    }
}

 

2018-11-09 14:36:35.863  INFO 15696 --- [main] com.len.config.BeanFactoryImpl           : BeanFactoryAware------->
2018-11-09 14:36:35.864  INFO 15696 --- [main] com.len.config.ZBeanFactory              : 对象---beanFactoryImpl---初始化开始
2018-11-09 14:36:35.865  INFO 15696 --- [main] com.len.config.ZBeanFactory              : 对象---beanFactoryImpl---初始化成功

2018-11-09 14:36:35.870  INFO 15696 --- [main] com.len.config.BeanName                  : BeanNameAware-------->:beanName
2018-11-09 14:36:35.871  INFO 15696 --- [main] com.len.config.ZBeanFactory              : 对象---beanName---初始化开始
2018-11-09 14:36:35.872  INFO 15696 --- [main] com.len.config.ZBeanFactory              : 对象---beanName---初始化成功

2018-11-09 14:36:42.116  INFO 15696 --- [           main] com.len.config.ZBeanFactory              : 对象---nullChannel---初始化开始
2018-11-09 14:36:42.123  INFO 15696 --- [           main] com.len.config.ZBeanFactory              : 对象---nullChannel---初始化成功
2018-11-09 14:36:42.151  INFO 15696 --- [           main] com.len.config.ZBeanFactory              : 对象---errorChannel---初始化开始
2018-11-09 14:36:42.185  INFO 15696 --- [           main] com.len.config.ZBeanFactory              : 对象---errorChannel---初始化成功

 

转载于:https://my.oschina.net/u/3136553/blog/2874145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值