编程语言
首页 > 编程语言> > java-从所有spring bean批注中获取“ Effective Spring Config”有效吗?

java-从所有spring bean批注中获取“ Effective Spring Config”有效吗?

作者:互联网

我喜欢用于bean声明等的批注.但是现在我们有很多带顺序的bean(@Depends).很难维护或一目了然地配置.

是否有任何工具可根据您的所有bean注释提供“有效的Spring Config”信息?

解决方法:

答:您不应使用那么多的@DependsOn批注.

从javadoc:

Used infrequently in cases where a bean
does not explicitly depend on another through properties or
constructor arguments, but rather depends on the side effects of
another bean’s initialization.

您可以这样做:

@Configuration
public class MyConfig {

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

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

}

在此示例中,RestOperations bean将在MovieClient bean之前实例化,仅因为movieClient bean在构造函数中要求它.在这种情况下,您不需要任何@DependsOn注释.

编辑:正如OP所评论的那样,仍然存在显示“ Effective Spring Config”的问题.

我认为没有任何工具可以使用,因为您的依赖项可能会在运行时发生变化(由于AutoConfiguration,@ Conditional批注,配置文件等).

如果您需要了解“有效的Spring配置”(即“运行时存在什么bean”),则可以执行以下操作:

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

但是,如果您要表示如何查看和导航所有配置,则可以将bean组织在不同的@Configuration文件中,使用@ComponentScan进行拾取,并使用适用于Eclipse的Spring IDE插件进行导航,如下所示:

Navigate Spring Configuration

标签:spring-4,spring,java
来源: https://codeday.me/bug/20191119/2037193.html