我知道下面提到的可以检测和使用注释的方式:
- 注释处理器(编译时代码生成)
- 运行时注释扫描(例如 ASM 和其他字节码扫描库)
- 自定义类加载器,反射(reflect)其加载的类的注释
- 在运行时使用反射 API
注意:我不确定是否使用过方法(3)
我正在寻找有关在什么样的场景中使用哪些注释处理技术的信息。我想到的一些例子是:
- 部署时间(例如,Java EE 容器如何知道部署 WAR 时是否正确应用了注释)
- 编译时间(例如,Apache Beehive Pageflows 在编译期间使用注释处理器生成大量 XML 文件)
- 运行时(例如 Spring 对您指定的类路径进行字节码注释扫描)
最佳答案
4 被依赖注入(inject)框架大量使用,例如 HK2
和 Guice
。
3 实际上在您关心类静态成员的依赖注入(inject)/初始化的任何地方使用,例如使用 PowerMock
来了解它是否需要处理类。
关于java - 实际中注释扫描采用什么策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601329/