2015-10-20 70 views
1

我想使用MBeanExporter來公開一個Mbean。但是,被導出的bean不一定總是存在。應該如何處理:MBeanExporter和條件加載的一個bean

<bean id="mybean" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false"> 
    <property name="beans"> 
     <map> 

      <entry key="bean:name=DatabaseDataSource" value="#{datasource.getPool().getJmxPool()}"/> 

     </map> 
    </property> 
</bean> 

可能是因爲getJmxPool()在導出失敗時有時會返回null。如果已知某個特定屬性設置時會導致此操作返回null,那麼如何使它成爲有條件(無mbeans暴露)。

回答

0

看看春天的環境配置文件:

http://gordondickens.com/wordpress/2012/06/12/spring-3-1-environment-profiles/

如果一個特定的環境或配置標誌不應該實例化的bean,只是用@Profile一個特定的文件標記的豆。如果bean與活動配置文件不匹配,Spring將不會嘗試實例化bean。

+0

是否可以使用通過propertyplaceholderconfigurer加載的屬性來決定配置文件激活 – user2599052

+0

您可以使用'getEnvironment()。addActiveProfile(「profile」)''以編程方式設置活動配置文件。然後,您可以使配置文件的名稱或有條件地設置您選擇的配置文件 – leeor

+0

可以在配置文件激活後在propertyplaceholderconfigurer加載屬性後執行? – user2599052