2014-01-09 80 views
0

在bean中引用applicationContext的可能用法是什麼?在Bean中需要ApplicationContext對象引用?

+0

如果您想動態獲取bean實例,但不想將自己與註釋綁定在一起? – CodeChimp

+0

沒有明顯的一個,從bean中獲取上下文?至於我,我沒有看到任何情況下,這可能是有用的 –

+0

如果你想做一些更復雜的依賴注入或需要一點處理過去簡單的情況下在一個setter上設置一個Bean或調用一個廠? – CodeChimp

回答

0

編寫基礎結構代碼時,它曾經是非常有用的的句柄ApplicationContextConfigurableApplicationContext。例如,如果你想寫一個服務定位器應該找到實現接口的所有豆子,你可以

@Autowired 
private ApplicationContext applicationContext; 

@PostConstruct 
public void addFooServices() { 

    for (... : this.applicationContext.getBeansOfType(FooService.class)) { 
     // do something with each 
} 

這類用途正在減少,因爲你可以現在(3.2,如果不是更早)只是注入

@Autowired 
private List<FooService> fooServices; 

但是,有時你的雙手放在容器上仍然有用,例如從JMX或其他hackery中觸發容器刷新。

0

會告訴你我們的使用體驗。我們使用的應用程序上下文得到實現特定接口豆的集合:

public class MyBean implements ApplicationListener<ContextRefreshedEvent> { 



    @Override 
    public void onApplicationEvent(ContextRefreshedEvent event) { 
     ApplicationContext context = event.getApplicationContext(); 
     Collection<IMyInterface> implementors = context.getBeansOfType(IMyInterface.class).values(); 

    } 

}

+0

OP在問你爲什麼要這樣做,而不是如何。 – CodeChimp

+0

@CodeChimp我以其他方式閱讀問題。相應地更新我的答案 – dhamibirendra

相關問題