当我使用Spring框架时,我经常会看到2个基于java和基于注释的配置/自动装配术语。
基于Java的基于注释的配置/自动装配是不同的还是一个?
如果它们不同,你能告诉我它们之间有什么不同吗?
答案 0 :(得分:4)
它们相似,但有细微差别。
不要在类上使用@Component注释(这是基于注释的配置),而是可以跳过@Component,而是使用@Bean注释方法返回此类的新实例。(这是Java-基于配置)。
对于最简单的应用程序,它没有什么区别,但它会影响诸如“查找方法注入期间的动态子类化”之类的内容,如果你在抽象方法上有@Lookup注释,Spring会自动执行魔术并覆盖此抽象返回@Component注释bean的方法。
Spring不能为引用@Bean bean的方法执行此自动子类化。在这种情况下,您需要使用自己的子类手动覆盖该方法。
您可以在Spring参考中找到基本代码示例。 https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-lookup-method-injection
答案 1 :(得分:4)
基于Java的配置:
官方Spring文档指的是使用带有@Configuration注释的Java类配置bean,并将@Bean方法包含为Java配置'。这使您可以完全免除应用程序中的所有XML(至少就Spring而言)。这种支持在Spring 3.0中添加,并且功能更强大。
换句话说,不需要配置文件。如果您的应用程序一切正常。
基于注释的配置:
从Spring 2.5开始,可以使用注释配置依赖注入。因此,不是使用XML来描述bean连接,而是可以通过在相关的类,方法或字段声明上使用注释将bean配置移动到组件类本身。
换句话说,还有XML配置文件,但bean连线是使用注释配置的 注意:注释注入是在XML注入之前执行的。因此,对于通过两种方法连接的属性,后一种配置将覆盖前者 注意:默认情况下,Spring容器中未打开注释接线。因此,我们可以使用基于注释的连接,我们需要在Spring配置文件中启用它。
答案 2 :(得分:1)
以下是基于注释和基于java的配置之间的区别,可能会帮助您找到答案。
1.Xml配置:
a)在基于xml的配置中,您可以在xml文件中定义bean定义/依赖项注入/自动连接。
b)如果您只想在XML文件中提供bean定义并且为了休息,您想要使用注释,那么您必须在XML文件中定义context:annotation-config
。
c)如果您只想对所有内容使用注释,那么您必须在XML文件中定义context:component-scan
。
2.基于Java的配置:如果你想使用基于java的配置,那么你必须在你的类上使用@Configuration
注释来加载容器。现在bean定义,你可以用两个。
a)在您的配置类@Bean
注释工厂方法,您可以使用new关键字为您提供bean对象。
example-
@Bean
public HelloWorld helloWorld(){
return new HelloWorld();
}
b)@Component
/ @Service
/ @Repository
/ @Controller
/ @RestController
覆盖您想要充当bean的类。
答案 3 :(得分:-1)
有两种配置Spring的方法。一种是为Java代码添加注释。这是基于java的,这是基于注释的,它是自动装配的。 所以基于java和基于注释是一回事。
另一种方法是使用xml文件配置Spring。
使用哪个是讨论问题Xml configuration versus Annotation based configuration