當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring BeanPostProcessor接口详细使用
生活随笔
收集整理的這篇文章主要介紹了
Spring BeanPostProcessor接口详细使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
BeanPostProcessor接口簡介
BeanPostProcessor也稱為Bean后置處理器,它是Spring中定義的接口,在Spring容器的創建過程中(具體為Bean初始化前后)會回調BeanPostProcessor中定義的兩個方法。
BeanPostProcessor的具體代碼如下:
public interface BeanPostProcessor {//bean初始化之前@Nullabledefault Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {return bean;}//bean初始化之后@Nullabledefault Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {return bean;} }postProcessBeforeInitialization方法會在每一個bean對象的初始化方法調用之前回調;postProcessAfterInitialization方法會在每個bean對象的初始化方法調用之后被回調。
這兩個方法分別在init方法前后執行,需要注意一點,我們定義一個類實現了BeanPostProcessor,默認是會對整個Spring容器中所有的bean進行處理。
既然是默認全部處理,那么我們怎么確認我們需要處理的某個具體的bean呢?
可以看到方法中有兩個參數。類型分別為Object和String,第一個參數是每個bean的實例,第二個參數是每個bean的name或者id屬性的值。所以我們可以第二個參數,來確認我們將要處理的具體的bean。
BeanPostProcessor示例
創建User對象
public class User implements InitializingBean, DisposableBean {public User() {System.out.println("實例化User構造方法...");}public void initUser() {System.out.println("User初始化方法initUser...");}public void destroyUser() {System.out.println("User銷毀方法destroyUser...");}@Overridepublic void destroy() throws Exception {System.out.println("調用實現DisposableBean的destroy方法....");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("調用實現InitializingBean的afterPropertiesSet方法......");} }BeanPostProcessor實現類
public class UserPostProcessor implements BeanPostProcessor {public Object postProcessBeforeInitialization(Object bean, String beanName)throws BeansException {// 這邊只做簡單打印 原樣返回beanSystem.out.println("postProcessBeforeInitialization===="+beanName);return bean;}public Object postProcessAfterInitialization(Object bean, String beanName)throws BeansException {// 這邊只做簡單打印 原樣返回beanSystem.out.println("postProcessAfterInitialization===="+beanName);return bean;}}配置文件UserConfig
@Configuration public class UserConfig {@Bean(initMethod = "initUser",destroyMethod = "destroyUser")public User user() {return new User();}@Beanpublic UserPostProcessor userPostProcessor() {return new UserPostProcessor();} }測試類
public class Test {public static void main(String[] args) {ApplicationContext applicationContext = new AnnotationConfigApplicationContext(UserConfig.class);((AnnotationConfigApplicationContext) applicationContext).close();} }執行結果:
實例化User構造方法... postProcessBeforeInitialization====user 調用實現InitializingBean的afterPropertiesSet方法...... User初始化方法initUser... postProcessAfterInitialization====user 19:57:17.700 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2437c6dc, started on Tue Oct 22 19:57:17 CST 2019 調用實現DisposableBean的destroy方法.... User銷毀方法destroyUser...總結
以上是生活随笔為你收集整理的Spring BeanPostProcessor接口详细使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring BeanFactoryPo
- 下一篇: Redis 远程连接和基本命令