@Configuration和@Component

时间:2019-12-29 09:50:53

标签: spring

Spring框架中的@Configuration@Component注释的行为之间是否有区别?

@Configuration更改为@Component时,会不会改变程序的行为?

我做了一些实验,到目前为止我发现它们总是一样的。 请注意,我对行为的差异特别感兴趣-我已经知道两个注释通常用于不同的情况。

2 个答案:

答案 0 :(得分:2)

您的@Configuration类也可以用@ComponentScan注释

  

我们使用@ComponentScan注释和@Configuration注释指定我们要扫描的软件包

如果您更改为@Component,它将无法正常工作

另请参阅difference between @Configuration and @Component

  

@Configuration也是@Component,但是@Component不能像@Cofinguration一样

答案 1 :(得分:1)

虽然它们都使带有注释的类bean,但它们具有不同的用途。

使用@Configuration处理一个类,作为定义bean的应用程序上下文的一部分。通常,您的@Bean类中有@Configuration个定义。

另一方面,

@Component注释意味着您的类本身就是一个bean,并且它是一个bean。

因此,例如,您需要一个豆MyService。 您可以通过两种方式定义它:

@Configuration
public class MyAppConfig {

   @Bean
   public MyService myService(){
      return new MyServiceImpl();
   }
}

或者只是

@Component
public class MyServiceImpl {
   ...
}

因此,当您将@Configuration用作配置时,添加特定于它的内容(@ComponentScan, @Bean, ...)会具有不同的行为,而不能仅与@Component一起使用。