- 對將bean聲明爲靜態或非靜態有什麼影響?
- 聲明靜態方法時,由於bean不是靜態的,因此無法訪問該bean。
能否解釋這個?當bean是singleton時,何時將spring bean聲明爲私有靜態?
謝謝。
能否解釋這個?當bean是singleton時,何時將spring bean聲明爲私有靜態?
謝謝。
如果聲明bean作爲靜態,你的意思是這樣
@Bean
public static MyBean myBean() {
return new MyBean();
}
那麼這樣做的好處是實例方法豆之前已經產生你的bean。
應用程序上下文可以自動檢測 他們的bean定義的BeanFactoryPostProcessor豆類和其他豆類獲取創建 前申請他們:你會用
BeanFactoryPostProcessor
其中規定用這個例子。
在您的bean的其餘部分聲明並使用靜態方法初始化它們之前,Spring Java配置方式將被自動檢測和初始化。例如,
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
春天將檢測PropertySourcesPlaceholderConfigurer
是BeanFactoryPostProcessor
,並用它來
【解析】$ {...} bean定義屬性中的佔位符值對 和@Value註解當前的Spring Environment以及其PropertySources的集合 。
因爲這些豆子都應該其他豆類之前進行初始化,用實例方法,沒有一點能夠訪問他們,讓你的第二個問題是沒有實際意義。
我指的是如下:public sample {@Autowired private static PropertySourcesPlaceholderConfigurer; ...在靜態方法和非靜態方法中內部使用bean}如果我沒有聲明爲靜態方法,那麼我無法在靜態方法中使用這個bean。所以我想知道聲明和它的好處的區別 – user2323036
聲明爲「static」的'@ Bean'方法將全部創建將在應用程序上下文中結束的對象。將它們聲明爲「靜態」的唯一好處是首先將它們放入應用程序上下文中。所以它與他們的生命週期有關。你將聲明爲「靜態」的bean通常不需要能夠使用其他bean(這將被聲明爲實例方法),所以它並不重要。 –
當我宣佈爲靜態問題是自動裝配不工作..該bean在應用程序代碼內部返回null。所以我的問題是,當bean是單例時,問題是否重要? – user2323036
向我們展示(通過代碼)「將bean聲明爲靜態」意味着什麼。 –