-
BeanPostProcessor后置处理器,可以在bean实例化的时候执行自己加上的逻辑。
-
BeanPostProcessor 是接口:
public interface BeanPostProcessor { @Nullable // 在bean实例化,执行特定init方法之前被执行 default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Nullable // 在bean实例化,执行特定init方法之后被执行 default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { return bean; } }
-
测试代码:
bean A:@Component public class A { @Autowired private B b; private String name; public A() { System.out.println("A的constructor........"); } @Override public String toString() { return "A{" + "b=" + b + ", name='" + name + '\'' + '}'; } @PostConstruct // 指定bean的init方法 public void init(){ System.out.println("----------init---------"); System.out.println(this); this.name = "A"; System.out.println(this); System.out.println("----------init-finish---------"); } }
bean B:
@Component public class B { public B() { System.out.println("B的constructor........"); } private String name; @Override public String toString() { return "B{" + "name='" + name + '\'' + '}'; } @PostConstruct public void init(){ System.out.println("----------init---------"); System.out.println(this); this.name = "B"; System.out.println(this); System.out.println("----------init-finish---------"); } }
自定义的BeanPostProcessor:
@Component public class MyBeanPostProcessor implements BeanPostProcessor{ @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("BeforeInitialization...... bean: " + bean); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("AfterInitialization........bean: " + bean); return bean; } }
测试Test:
public class Test { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.jin.king.BeanPostProcessorTest"); A a = context.getBean("a", A.class); System.out.println("getBean之后:" + a); } }
结果图:
BeanPostProcessor后置处理器的快速(初级)入门 详细例子说明如何使用
本文详细介绍了Java BeanPostProcessor接口的工作原理,展示了如何在Spring框架中使用自定义BeanPostProcessor实现对bean实例化前后逻辑的定制,并通过实例代码演示了其在实际项目中的应用场景。
摘要由CSDN通过智能技术生成