Spring Boot 2.x实战10 - Spring 5.x基础8 - 理解 BeanPostProcessor

3 Bean处理 - BeanPostProcessor

我们可以通过实现BeanPostProcessor接口,对容器内所有或者部分指定Bean在构造的时候进行对其进行处理。它和@PostConstruct@PreDestroy不同的是它针对的是IoC容器里所有的Bean。

@Component
public class GlobalPostProcessor implements BeanPostProcessor {
    @Override // 初始化之前的处理
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { 
        System.out.println("----" + beanName + "----");
        System.out.println("----" + beanName.getClass() + "----");
        return bean;
    }

    @Override //初始化之后的处理
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("++++" + beanName + "++++");
        System.out.println("++++" + beanName.getClass() + "++++");
        return bean;
    }
}

通过重载postProcessBeforeInitializationpostProcessAfterInitialization方法,所有的Bean在初始化之前会执行postProcessBeforeInitialization里的处理逻辑,在初始化之后会执行postProcessAfterInitialization里的处理逻辑。

在这里插入图片描述
若果我们要缩小Processor的处理范围可以通过判断Bean类型来实现:

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    if (bean instanceof LifeService){ //用instanceof减少处理范围
        System.out.println("++++" + beanName + "++++");
        System.out.println("++++" + beanName.getClass() + "++++");
    }
    return bean;
}

新书推荐:

我的新书《从企业级开发到云原生微服务:Spring Boot 实战》已出版,内容涵盖了丰富Spring Boot开发的相关知识
购买地址:https://item.jd.com/12760084.html

在这里插入图片描述

主要包含目录有:

第一章 初识Spring Boot(快速领略Spring Boot的美丽)
第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ IDEA、Gradle、Lombok、Docker等)
第三章 函数式编程
第四章 Spring 5.x基础(以Spring 5.2.x为基础)
第五章 深入Spring Boot(以Spring Boot 2.2.x为基础)
第六章 Spring Web MVC
第七章 数据访问(包含Spring Data JPA、Spring Data Elasticsearch和数据缓存)
第八章 安全控制(包含Spring Security和OAuth2)
第九章 响应式编程(包含Project Reactor、Spring WebFlux、Reactive NoSQL、R2DBC、Reactive Spring Security)
第十章 事件驱动(包含JMS、RabbitMQ、Kafka、Websocket、RSocket)
第11章 系统集成和屁股里(包含Spring Integration和Spring Batch)
第12章 Spring Cloud与微服务
第13章 Kubernetes与微服务(包含Kubernetes、Helm、Jenkins、Istio)
多谢大家支持。

发布了116 篇原创文章 · 获赞 10 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/wiselyman/article/details/105734170