Spring容器擴展機制的原理是什么?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務器托管提供商,專業(yè)提供成都服務器托管,服務器租用,樂山服務器托管,樂山服務器托管,成都多線服務器托管等服務器托管服務。
BeanPostProcessor 接口
如果希望在Spring容器完成實例化、配置和初始化bean之后實現(xiàn)某些自定義邏輯, 則可以實現(xiàn)一個或多個 BeanPostProcessor
接口.
public interface BeanPostProcessor { @Nullable default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Nullable default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { return bean; } }
在 Bean 實例化之后會先執(zhí)行 postProcessBeforeInitialization
方法, 再執(zhí)行 Bean 的初始化方法, 然后在執(zhí)行 postProcessAfterInitialization
方法.
Ordered 接口 @Order 注解
此接口只有一個方法 int getOrder();
用來設置執(zhí)行順序.
如果實現(xiàn)多個 BeanPostProcessor
接口, 我們就可以實現(xiàn) Ordered
接口來設置執(zhí)行順序.
@Component public class Test implements BeanPostProcessor, Ordered { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { return bean; } @Override public int getOrder() { return 1; } }
也可以使用 @Order
注解進行排序
@Configuration @Order(2) public class Demo1Config { @Bean public Demo1Service demo1Service(){ System.out.println("demo1config 加載了"); return new Demo1Service(); } }
看完上述內(nèi)容,你們掌握Spring容器擴展機制的原理是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!