java - 实际中注释扫描采用什么策略?

标签 java spring reflection annotations bytecode

我知道下面提到的可以检测和使用注释的方式:

  1. 注释处理器(编译时代码生成)
  2. 运行时注释扫描(例如 ASM 和其他字节码扫描库)
  3. 自定义类加载器,反射(reflect)其加载的类的注释
  4. 在运行时使用反射 API

注意:我不确定是否使用过方法(3)

我正在寻找有关在什么样的场景中使用哪些注释处理技术的信息。我想到的一些例子是:

  1. 部署时间(例如,Java EE 容器如何知道部署 WAR 时是否正确应用了注释)
  2. 编译时间(例如,Apache Beehive Pageflows 在编译期间使用注释处理器生成大量 XML 文件)
  3. 运行时(例如 Spring 对您指定的类路径进行字节码注释扫描)

最佳答案

4 被依赖注入(inject)框架大量使用,例如 HK2Guice

3 实际上在您关心类静态成员的依赖注入(inject)/初始化的任何地方使用,例如使用 PowerMock 来了解它是否需要处理类。

关于java - 实际中注释扫描采用什么策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601329/

相关文章:

java - 为什么我的示例中需要具有相同名称的 bean?为什么当我将 bean 文件的值更改为 bean 配置文件时,它永远不会返回我的输出?

Java反射: Invoke function in a inner static class

java - 从子类外部访问父类的 protected 方法(使用反射或任何可行的方法)

java - 首次登录时无法打开 Hibernate Session 进行事务处理

java - 如何在 Java 中将 IEEE-754 二进制表示字符串转换为 float 或 double ?

java - Spring 3 Web MVC 错误 - 在此服务器上找不到请求的 URL/app-context/page-name

加载 DLL 期间出现 C# 异常。找不到解决方法

java - Clojure 性能优化与等效 Java

Javafx拖放第一次不起作用

java - 属性文件中的逗号分隔列表作为 Spring Bean 中的构造函数参数