1. 程式人生 > >spring例項化一個bean的前後執行一些附件操作

spring例項化一個bean的前後執行一些附件操作

簡便起見使用實現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