簡體   English   中英

在春季有條件地制作豆子

[英]Conditionally creating beans in spring

現在,我正在使用Spring Remoting的RMI / SOAP / JMS / Hessian / Burlap / HttpInvoker導出程序公開應用程序的服務層。 我想要的是允許用戶以某種方式定義他們想要啟用哪些遠程處理機制(而不是啟用所有遠程處理機制),然后僅創建那些導出器bean。

我希望spring的應用程序上下文xml支持在xml的各個部分周圍放置條件塊。 但是,到目前為止,從我所看到的內容來看,標准的Spring發行版中沒有任何東西可以讓你做這樣的事情。

還有其他方法可以實現我的目標嗎?

我將假設您正在根據環境配置應用程序,例如在生產中,我想使用此bean,在其他開發中,使用...

就像Ralph所說的那樣,從Spring 3.1開始,您就有了配置文件...但是關鍵是要了解,您應該將基於環境的Bean放在不同的配置文件中...這樣您就可以擁有dev-beans.xml,prod之類的東西-beans.xml ...然后在您的主spring文件中,然后僅根據您使用的環境調用相應的文件...因此,概要文件只是這樣做的技術...但是您也可以使用其他技術,例如具有系統環境變量,或在構建中傳遞參數來確定要使用的bean

您可以通過使用Spring @Configuration bean來實現這一點,因此可以用Java代碼構造bean。 (請參閱http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-java

@Configuration
public class AppConfig {
  @Bean
  public MyService myService() {
      if ( userSettingIshessian ) {
          return new HessianExporter();
      }else {
          return new BurlapExporter();
      }
  }
}

當然,您需要從某處獲取用戶設置,使用系統參數或配置文件或其他方法。

Spring 3.1具有配置文件的概念。 我可以使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM