Java 注释通常是通过AOP实现的吗?它们可以;“做”;依赖性注射?

Java 注释通常是通过AOP实现的吗?它们可以;“做”;依赖性注射?,java,spring,dependency-injection,annotations,spring-aop,Java,Spring,Dependency Injection,Annotations,Spring Aop,Spring框架中的注释是如何实现的?它们是通过依赖注入或面向方面编程实现的吗 我认为他们使用AOP,因为有注释的东西会做其他地方指定的事情。另一方面,类似于@Autowired@Qualifier(“beanID”)的东西是依赖注入——好吧,也许注释基于AOP,可以实现依赖注入?这是正确的吗 我只是在想这个问题,因为我在读spring的主要部分:di和aop 我想知道注释属于哪里。注释什么都不做,代码可以用注释做事情,这是一个巨大的区别 我建议您阅读Java教程,了解注释的含义 基本上有三种处

Spring框架中的注释是如何实现的?它们是通过依赖注入或面向方面编程实现的吗

我认为他们使用AOP,因为有注释的东西会做其他地方指定的事情。另一方面,类似于
@Autowired@Qualifier(“beanID”)
的东西是依赖注入——好吧,也许注释基于AOP,可以实现依赖注入?这是正确的吗

我只是在想这个问题,因为我在读spring的主要部分:di和aop 我想知道注释属于哪里。

注释什么都不做,代码可以用注释做事情,这是一个巨大的区别

我建议您阅读Java教程,了解注释的含义

基本上有三种处理注释的方法(可能还有更多,但我知道有三种):

  • 预编译
  • (编译时匹配,运行时评估)
  • 反射(使用)
Spring使用反射读取注释值,然后要么注入依赖项,要么添加AOP建议(以及更多内容)。但是如果您在Spring中使用静态AspectJ编译,那么切入点中会使用一些相同的注释。

在Spring的上下文中(不仅如此,这也是您的问题所在),注释仅仅是元数据——与代码相关联的信息。它们只是XML元数据的一个方便(或不方便)替代品,其作用是相同的:例如,声明应使用给定参数调用给定的setter。注释和XML元数据之间的主要区别在于注释与代码捆绑在一起,因此它们可以作为方便的默认值,而您仍然可以使用XMLBean定义覆盖它们


为了完成“工作”,仅对代码进行注释是远远不够的(因为编写XML应用程序上下文描述符永远不够。您需要某种类型的bean工厂/应用程序上下文,能够读取元数据并执行任何需要的操作。

在Spring中识别一些JSR-250注释,并创建一个动态代理,例如@PostConstruct&@PreDestroy。这是在包含期间完成的。)DI类型的注释是通过上下文指令发现的,比如and。因为DI发生在bean后期处理之前,所以不需要代理


Spring项目中的注释(超过470个)

它们是可排序的-单击内容下的链接以访问Google电子表格。

这将允许您对它们进行排序

顺便说一下,现在有500多个注释(最近添加了Hibernate 3)

我计划在更加专注的时候添加更多细节,包括:

  • 注释参数
  • 注释的使用说明

谢谢!例如@Autowired@Qualifier(“beanID”)Spring使用反射来注入依赖项。使用@Transactional Spring使用反射来添加AOP建议。对吗?@nano7是的。Spring AOP模仿aspectj的功能,但使用反射而不是静态编译。主页上的注释列表很好。如果可以根据项目按字母顺序排序,那也很好它们用于(安全性、spring、批处理)不,我不是指像“spring”、“javax”、“hibernate”这样的排序,而是“roo”、“batch”、“mvc”……这会更有趣。