我正在製作一個需要基本認證或Oauth2的彈簧啓動應用程序,具體取決於我定義的屬性。動態加載配置Bean
問題是,如果我使用@configuration創建了兩個類,那麼應用程序不會啓動,如果我只留下一個並在configure方法中添加一個if來配置HttpSecurity對象,端點具有基本認證。
我嘗試這樣動態註冊豆:
@Bean
public ResourceServerSecurityConfig oauthConfig(){
if(isOauthEnabled){
return new ResourceServerSecurityConfig();
}else{
return null;
}
}
@Bean
public BasicSecurityConfig basicConfig(){
if(isOauthEnabled){
return new BasicSecurityConfig();
}else{
return null;
}
}
不過,這不加載的配置。 有關如何將其歸檔的任何提示?
「@Conditional」工作!好...好。它根據一個值加載bean。我現在遇到的問題是我創建了一個實現了Condition接口的類,但該類沒有從屬性文件中加載「@Value」。我試圖用「@Component」註解類,因爲對於「@value」來說,類應該是一個bean,但是我找不到爲什麼這個值沒有被加載。無論如何,我標記你的答案是正確的,因爲這解決了原來的問題;)。謝謝! – aruiz
找到最後一個問題的解決方案。使用Match方法中的ConditionContext,我能夠從文件中讀取屬性。因爲[鏈接](http://stackoverflow.com/questions/25276463/how-get-working-value-or-environment-in-a-class-implementing-the-condition-conf)說, 「春天需要你已經指定的Class類型並將其實例化爲使用其匹配方法,它不會將該實例視爲一個bean,它不會執行自動裝配,也不會執行任何@Value處理,後者對於BeanFactoryPostProcessor也是如此「。 – aruiz