在自定义BeanFactory的后置处理器中尚未示例化的bean定义进行修改

  1. 创建自定义BeanFactory的后置处理器
    并设置MyLog为懒加载
/**
 * 在类的定义加载完但是没有初始化是对类定义做除修改
 */
@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println("IOC 容器调用了 MyBeanFactoryPostProcessor 的 MyBeanFactoryPostProcessor 方法");
        for (String beanName: beanFactory.getBeanDefinitionNames()) {
            if ("myLog".equals(beanName)) {
                BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
                beanDefinition.setLazyInit(true);
            }
        }
    }
}

public class MyLog {
    public MyLog() {
        System.out.println("MyLog 构造方法");
    }
}
  1. 配置类中配置bean
@Configuration
@ComponentScan(value = {"com.dgr.spring.bean_factory_post_processor"})
public class MainConfig {
    @Bean
    public MyLog myLog() {
        return new MyLog();
    }
}
  1. 初始化IOC容器
public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
//        MyLog myLog = (MyLog) context.getBean("myLog");
}

MyLog类的构造方法并没有被调用

21:18:12.770 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory'
IOC 容器调用了 MyBeanFactoryPostProcessor 的 MyBeanFactoryPostProcessor 方法
21:18:12.773 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor'
21:18:12.774 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor'
21:18:12.779 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'mainConfig'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值