当前位置: 首页 > 知识库问答 >
问题:

有没有从所有Spring bean注释中获得“有效的Spring Config”?

席安康
2023-03-14

我喜欢用于bean声明等的注释,但现在我们有这么多具有顺序的bean(@取决于)。很难维护或浏览配置。

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

共有1个答案

赫连秦迟
2023-03-14

回答:您不应该使用那么多的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将在MovieClient bean之前实例化,因为MovieClient bean在构造函数中要求它。在这种情况下,您不需要任何依赖注释。

编辑:正如OP所评论的,仍然存在显示“有效Spring配置”的问题。

我不认为有任何工具可以做到这一点,因为您的依赖项可能会在运行时发生变化(因为AutoConfiguration、@Con条件注释、配置文件等?)。

如果需要了解“有效的Spring配置”(即“运行时存在哪些bean”),可以这样做:

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

但是,如果您的意思是如何查看和导航所有配置,那么您可以将bean组织在不同的配置文件中,使用组件扫描(ComponentScan)将其拾取,并使用Eclipse的Spring IDE插件对其进行导航,如下所示:

 类似资料:
  • 我的目标是将jsonObject转换为Class。我只想添加在类中批注的字段。例如:json 对象包含 50 个字段。类有 4 个字段。我只想映射精确的4个字段,而不在类中添加46个加法忽略。 JSON: 类: 用户类没有地址字段。我的目标是排除它,因为它没有注释。

  • 我想获取属于一个节点的所有标签,如果SDN4.0中有一种方法可以在一个查询中实现这一点吗? 例如,我当前的回购协议如下 有没有反正我可以简单地 检索此账本节点的所有标签。 这本书的课程是 是的,默认情况下,我的Book节点应该有两个标签和。由于我在回购中有一个更新方法来添加另一个标签。无论如何,我可以找回这本书与所有3个标签? 谢啦

  • 这在Maven中起作用,但是当我修改类时,IntelliJ给我的注释处理器提供了一个,其中作为单个根元素。 我知道Gradle通过将带有所有与注释匹配的源代码的假传递给注释处理器来支持聚合注释处理器的增量编译,但是IntelliJ似乎没有类似的内容。(也许Gradle项目除外?) 当IntelliJ只编译类时,找到这两个类的最佳方法是什么?

  • 问题内容: 如果我们使用 代替 如果我们使用不带注释的日期列属性,会有任何副作用吗? 问题答案: 我设法找到的只有一部分文档: 在纯Java API中, 未定义时间 的 时间精度 。处理时态数据时,您可能需要描述数据库中的预期精度。时间数据可以具有DATE,TIME或TIMESTAMP精度(即实际日期,仅时间或两者兼有)。使用@Temporal批注进行微调。 从2.2.2.1开始。声明基本属性映射

  • 因为我是在中配置序列化程序的,所以我不能在构造函数参数中传递。

  • 我的测试框架使用selenium的PageFactory和Lambok。我想编写一个方面来捕获测试流在运行时遇到的所有web元素。 一个典型的页面看起来像: @FindBy确定测试所处理的webelement。这样的页面有50页。 当使用PageFactory实例化页面时,将实例化webElement字段(使用与@FindBy中的值对应的webElement实例进行分配)。 我希望在实例化这些we