2015-10-16 63 views
3

我喜歡用於bean聲明等的註釋。但是現在我們有很多訂單(@Depends)的bean。維護或查看配置很難。有沒有辦法從所有Spring beans註釋中獲得「Effective Spring Config」?

有沒有提供基於所有bean註釋的「Effective Spring Config」信息的工具?

+2

我建議你將此詞改寫爲合適的問題。 FE,「如何根據我所有的bean註釋獲取」Effective Spring Config「信息?」這可能是一個非常有用的帖子,當不要求一個工具。 – ChiefTwoPencils

回答

3

答:你不應該使用那麼多的@DependsOn註解。

根據JavaDoc:

在一個bean 沒有明確依賴於另一個通過屬性或 構造函數的參數,而是要看 另一個bean的初始化的副作用的病例很少使用。

你可以只是這樣做:

@Configuration 
public class MyConfig { 

    @Bean 
    public MovieClient movieClient(RestOperations rest) { 
     return new MovieClientImpl(rest); 
    } 

    @Bean 
    public RestOperations restOps() { 
     return new RestTemplate(); 
    } 

} 

在這個例子中,RestOperations bean將前instantiaded MovieClient豆,只是因爲movieClient豆在構造函數中需要它。在這種情況下,您不需要任何@DependsOn註解。


編輯:作爲OP評論,還有顯示 「有效Spring配置」 的問題。

我不認爲有任何工具,因爲您的依賴關係可能會在運行時更改(由於AutoConfiguration,@Conditional註釋,配置文件,其他?)。

如果你需要知道你的「有效Spring配置」(即「什麼豆在運行時出現」),你可以這樣做:

ConfigurableApplicationContest context; 
context = SpringApplication.run(Application.class, finalArgs); 
// Print all the beans: 
System.out.println(context.getBeanDefinitionNames()); 

但是,如果你的意思是你怎麼能查看和瀏覽所有的配置,你可以組織豆類在不同@Configuration的文件,它們撿起來使用@ComponentScan,並使用Spring IDE pluguin Eclipse的瀏覽他們,就像這樣:

Navigate Spring Configuration

+0

@gpa不要把所有的'beans'放在一個'Configuration'文件中,它仍然存在所有依賴關係的問題:) – gpa

+1

@gpa。你應該按照一些標準將它們分成不同的文件,比如'MongoConfiguration'類,'MvcConfiguration'類等。然後,一個'ComponentScan'註解將加載它們(甚至解決相互間的依賴關係)。那麼簡單;) – ESala

+0

@gpa我已經更新了我的答案,以解決了解所有依賴關係的問題。 – ESala

相關問題