无论如何要从所有 spring bean 注释中获取 "Effective Spring Config"?
Is there anyway to get "Effective Spring Config" from all spring beans annotations?
我喜欢用于 bean 声明等的注释。但是现在我们有这么多有顺序的 bean (@Depends)。很难维护或一目了然地配置。
是否有任何工具可以根据您所有的 bean 注释提供 "Effective 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" 的问题。
我认为没有任何工具可以做到这一点,因为您的依赖项可能会在运行时发生变化(因为自动配置、@Conditional
注释、配置文件等?)。
如果您需要知道您的 "Effective Spring Config"(即 "what beans are present at runtime"),您可以这样做:
ConfigurableApplicationContest context;
context = SpringApplication.run(Application.class, finalArgs);
// Print all the beans:
System.out.println(context.getBeanDefinitionNames());
但是,如果您的意思是如何查看和导航所有配置,您可以将 bean 组织在不同的 @Configuration
文件中,使用 @ComponentScan
,并使用 Eclipse 的 Spring IDE 插件导航它们,如下所示:
我喜欢用于 bean 声明等的注释。但是现在我们有这么多有顺序的 bean (@Depends)。很难维护或一目了然地配置。
是否有任何工具可以根据您所有的 bean 注释提供 "Effective 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" 的问题。
我认为没有任何工具可以做到这一点,因为您的依赖项可能会在运行时发生变化(因为自动配置、@Conditional
注释、配置文件等?)。
如果您需要知道您的 "Effective Spring Config"(即 "what beans are present at runtime"),您可以这样做:
ConfigurableApplicationContest context;
context = SpringApplication.run(Application.class, finalArgs);
// Print all the beans:
System.out.println(context.getBeanDefinitionNames());
但是,如果您的意思是如何查看和导航所有配置,您可以将 bean 组织在不同的 @Configuration
文件中,使用 @ComponentScan
,并使用 Eclipse 的 Spring IDE 插件导航它们,如下所示: