当我使用Spring框架时,我经常看到2个基于Java和基于注释的配置/自动装配术语。
基于Java的与基于注释的配置/自动装配是否有所不同?
如果它们不同,您能告诉我它们之间有什么不同吗?
它们相似,但有细微的差异。
您可以在@Component上跳过@Component而不是在类上具有@Component注释(这是基于注释的配置),而可以使用@Bean注释的方法来返回此类的新实例。(这是基于Java的配置) 。
对于最简单的应用程序,它没有什么区别,但会影响“查找方法注入期间的动态子类化”之类的东西,如果在抽象方法上具有@Lookup批注,Spring会自动执行魔术操作并覆盖此抽象方法以返回一个@Component注释的bean。
对于引用@Bean bean的方法,Spring不能执行此自动子类化。在这种情况下,您需要使用自己的子类手动覆盖该方法。
您可以在Spring参考中找到基本的代码示例。 https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-lookup-method-injection
基于Java的配置:
Spring的官方文档涉及使用Java类(使用@Configuration注释并包含@Bean方法作为“ Java Configuration”)配置bean。这使您可以完全摆脱应用程序中的所有XML(至少就Spring而言)。此支持是在Spring 3.0中添加的,并且功能越来越强大。
资源
换句话说,不需要配置文件。如果您的应用程序一切正常。
基于注释的配置:
从Spring 2.5开始,可以使用注释配置依赖项注入。因此,可以使用相关类,方法或字段声明上的注释,而不是使用XML来描述bean的连接,而是可以将bean配置移入组件类本身。
资源
换句话说,还存在XML配置文件,但是Bean接线是使用注释配置的。
注意:注释注入在XML注入之前执行。因此,对于通过两种方法连接的属性,后一种配置将覆盖前者。
注意:默认情况下,Spring容器中的注释接线未打开。因此,我们可以使用基于注释的接线,我们需要在Spring配置文件中启用它。