【发布时间】:2016-03-16 22:51:10
【问题描述】:
给定一个专门包含急切(非惰性)单例 bean 的 Spring 配置,即默认值,如果没有在任何地方注入任何这些 bean,是否可以让 Spring 抛出异常?我本质上是在寻找一种方法来检测 Spring bean 形式的死代码。
我的问题和这些有点相似。
- http://forum.spring.io/forum/spring-projects/container/116494-any-tools-or-method-to-identify-unused-spring-beans
- Spring Instantiation and 'unused beans'
- How to detect unused properties in Spring
然而,
- 我对手动检查图表或解析日志数据不感兴趣。
- 我没有增加多个上下文文件、覆盖 bean、bean 后处理或 xml 的复杂性。这是一个简单、直接、注释驱动的配置。
- 我使用的是 Spring Boot 1.2.6,它比这些问题更新了几年(可能存在新功能)。
如果缺少必要的 bean,Spring 肯定会抛出异常。是否也可以在找到 bean 但不必要的相反场景中抛出异常?
【问题讨论】:
-
两种“快速”检测它们的方法,但它有点脏:1) 使用来自visualvm.github.io 的可视 VM,运行您的应用程序并查看所有 bean 的实例数。 2)声明私有所有bean(临时)以检查谁真正在调用它们(调用者也会出错)。仅当呼叫者抱怨时,才将您的 bean 类一一重新公开。最后仍然是私有的是未使用的。
-
在IDEA中你也可以按Ctrl+鼠标左键单击它会显示你的bean(类)的所有用法
-
自我注意:另一个不使用 Spring 或任何依赖反射的东西的原因。坚持使用 java 编译器。
-
@SridharSarnobat,您可能对Micronaut 感兴趣。
标签: java spring-boot spring-bean dead-code