2015-07-09 49 views
0

我有訂購問題。 My @Bean在我的XML Bean之後運行。我需要這樣做,因爲我的@Bean建立了XML Bean所需的屬性。看來@ImportResource註釋在@Configuration之前被處理,@Bean註釋被處理。實例化Spring XML和Java配置Bean相關屬性的訂購問題

我有一個配置類由另一個由@ContextConfiguration註解的類引導。第一被註釋爲這樣:

  • @Configuration
  • @Import(PropertyConfiguration.class)
  • @ImportResource(Consts.XML_BASED_CONFIG_FILE)

PropertyConfiguration.class包括@Bean定義,使用PropertySource(而不是註解)來引入屬性,以供Consts.XML_BASED_CONFIG_FILE中定義的XML bean使用。

@ImportResource是對現有基於XML的bean def文件的例程引用,以便java和xml bean互操作。

除了這個排序問題,一切都運行良好。

我已經嘗試引入使用@ProperySource的屬性 - 最好我可以告訴註釋不支持運行自定義bean,因爲屬性源是JDBC數據庫。我在@ImportResource之前建立了@PropertySource運行,所以這將解決排序問題。 我試過@Lazy(false)@Bean方法 - 沒有幫助。

接下來的事情將是從我的XML文件引導@configuration - 但是,我認爲這並不重要。

任何幫助表示讚賞。謝謝。

+0

嗯......我嘗試了先引導XML,但沒有幫助。 – criedluv

回答

0

@ImportResource確實在@Configuration之前處理了註釋,@Bean註釋被處理。我沒有找到扭轉這個順序的方法。由於導入的資源是一個引用Spring屬性的基於XML文件的bean定義,因此在創建bean之前還沒有設置屬性並導致錯誤。這意味着,當您在@Bean方法中設置屬性並且期望在由XML bean引用之前設置這些屬性時,您不能實現@Configuration@Beans沿着XML Bean的邊。

就我而言,@Bean正在從JDBC源中建立屬性。

爲了解決這個問題,我必須將每個XML Bean引用屬性轉換爲@Beans

希望這可以幫助