2015-10-16 43 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

相关问题