我的應用程式配置中有兩個 bean。我只想啟用一個基于屬性的 bean,我們可以根據屬性使 bean 有條件嗎?
例如:假設我有這個屬性 enable.userconnection: true,我想創建UserCredentialsConnectionFactoryAdapterbean。如果我將該值設定為false. 我想啟用CachingConnectionFactorybean。
@Bean
public CachingConnectionFactory connectionFactory(
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setTargetConnectionFactory(axonConnectionFactory);
connectionFactory.setReconnectOnException(true);
connectionFactory.setSessionCacheSize(jmsSessionCacheSize);
return connectionFactory;
}
@Bean
public UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter()
throws Exception {
UserCredentialsConnectionFactoryAdapter connectionFactoryAdapter =
new UserCredentialsConnectionFactoryAdapter();
connectionFactoryAdapter.setUsername(getUsername());
connectionFactoryAdapter.setPassword(getPassword());
connectionFactoryAdapter.setTargetConnectionFactory(
messagingJMSService().getConnectionFactory(getName()));
return connectionFactoryAdapter;
}
我試過這種方式,根據組態檔效果很好。但是,我想應用類似的邏輯來利用財產。
@ConditionalOnExpression("#{!environment.getProperty('spring.profiles.active').contains('a') && !environment.getProperty('spring.profiles.active').contains('b')}")
uj5u.com熱心網友回復:
你可以嘗試這樣的事情
@Bean
@ConditionalOnProperty(prefix = "my.property.prefix", name = "myProperty")
public MyBean myBean(){
return new MyBean();
}
參考 - Spring boot ConditionalOnProperty 檔案
uj5u.com熱心網友回復:
類似于條件運算式,spring 有條件屬性可以做到這一點https://www.baeldung.com/spring-conditionalonproperty
當 2 個類實作介面時,我用它來創建一個實作介面的類的 bean。兩個 bean 的條件中只有 1 個應該評估為 true,這樣您就不會得到沖突錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/536401.html
標籤:爪哇春天弹簧靴弹簧MVC
