Spring框架中的@Configuration
和@Component
注释的行为之间是否有区别?
将@Configuration
更改为@Component
时,会不会改变程序的行为?
我做了一些实验,到目前为止我发现它们总是一样的。 请注意,我对行为的差异特别感兴趣-我已经知道两个注释通常用于不同的情况。
答案 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
一起使用。