Spring框架中的注释是如何实现的?他们是通过使用依赖注入还是面向方面编程来实现的?注释通常是用AOP实现的,他们可以“做”注入?
我以为他们使用AOP,好吧,因为注释的东西会做某些指定的地方。另一方面,像@Autowired @Qualifier("beanID")
IS依赖注入 - 也许注释是基于AOP并可以实现倾向注入?它是否正确?
我只是在想它,因为我正在阅读有关春季的主要部分:di和aop ,我想知道注释属于哪里。
Spring框架中的注释是如何实现的?他们是通过使用依赖注入还是面向方面编程来实现的?注释通常是用AOP实现的,他们可以“做”注入?
我以为他们使用AOP,好吧,因为注释的东西会做某些指定的地方。另一方面,像@Autowired @Qualifier("beanID")
IS依赖注入 - 也许注释是基于AOP并可以实现倾向注入?它是否正确?
我只是在想它,因为我正在阅读有关春季的主要部分:di和aop ,我想知道注释属于哪里。
注释不要做任何事情,代码可以做的事情与注释,这是一个巨大的差异。
我建议您阅读Java教程中的Annotations以了解注释的含义。
基本上有三种方式来处理注释(可能有更多的,但我知道三):
AnnotatedElement.getAnnotation(annotationtype)
)Spring使用反射来读注释值,然后或者注入d依赖矿石添加AOP建议(还有更多的东西)。但是如果你在Spring中使用静态AspectJ编译,那么在切入点中会使用一些相同的注释。
在Spring的上下文中(不仅仅是,但这是你的问题所在),注释仅仅是元数据 - 与代码相关的信息。它们只是方便(或不是)替换XML元数据,它可以做同样的事情:例如,指定给定的setter应该用给定的参数调用。注释和XML元数据之间的主要区别在于注释与代码捆绑在一起,因此它们可以用作方便的默认值,但您仍然可以使用XML bean定义覆盖它们。
为了完成“作业”,注释代码是不够的(因为编写XML应用程序上下文描述符永远不够,您需要某种能够读取该代码的bean工厂/应用程序上下文元数据和做任何要求。
一些JSR-250注解在Spring的认可和动态代理创建诸如@PostConstruct & @PreDestroy,这是容器启动时完成。DI类型的注释通过上下文指令,例如发现因为DI发生在bean后处理之前,所以不需要代理。
Spring项目中的注释(超过470) - http://gordondickens.com/wordpress/2011/05/20/annotation-reference-for-spring-projects/
在您的主页上有很好的注释列表。如果他们可以根据他们使用的项目(安全,弹簧,批次)按字母顺序排序,那么它也会很好。 – nano7 2011-05-25 15:01:10
它们是可排序的 - 单击内容下面的链接转到Google Spreadsheet。
这将允许您排序它们。
顺便说一下,现在有超过500个注释(最近添加了Hibernate 3)。
我打算增加更多的细节时,我得到更集中的时间,其中包括:
不,我不是说像“spring”,“javax”,“hibernate”,“roo”,“批次“,”mvc“......这会更有趣。 – nano7 2011-06-07 08:33:28
谢谢!例如@ Autowired @ Qualifier(“beanID”)Spring使用Reflection来注入一个依赖项。与@Transactional春天使用反射来添加AOP建议。正确? – nano7 2011-05-24 12:49:07
@ nano7是的。 Spring AOP模仿了aspectj所做的事情,但是用反射而不是静态编译 – 2011-05-24 13:00:23