spring例項化一個bean的前後執行一些附件操作
阿新 • • 發佈:2019-02-05
簡便起見使用實現InitializingBean介面,重寫afterPropertiesSet方法即可。
1. 將配置檔案資料寫入例項中
@Service("***Service") public class ***Service implements InitializingBean { @Value("#{propertyConfigurer['name']}") private String bucketName; @Override public void afterPropertiesSet() throws Exception { //do something }
2.spring載入properties檔案
參照:http://www.cnblogs.com/susuyu/archive/2012/09/10/2678458.html
問題:實現InitializingBean介面與在配置檔案中指定init-method有什麼不同?
如果該bean是實現了InitializingBean介面,並且同時在配置檔案中指定了init-
method,系統則是先呼叫afterPropertiesSet方法,然後在呼叫init-method中指定的方法。
這方式在spring中是怎麼實現的?
通過檢視spring的載入bean的原始碼類(AbstractAutowireCapableBeanFactory), 是否實現了實現了InitializingBean介面,如果實現,先呼叫afterPropertiesSet方法,在判斷是否有指定initmethod,有則呼叫。
當然,也可以通過BeanPostProcessor實現簡單到修改一個bean,也可以複雜到返回一個完全不同的物件。
參照:http://www.cnblogs.com/sunxucool/archive/2013/06/13/3134438.html