一尘不染

Spring 3中@Component和@Configuration之间的区别

spring

我遇到了Spring 3提供的两个注释(@Component和@Configuration),我对它们之间有些困惑。
这是我读到的有关@Component的内容

将此“ context:component”放入bean配置文件中,这意味着在Spring中启用自动扫描功能。基本包指示组件的存储位置,Spring将扫描此文件夹并找出Bean(用@Component注释)并将其注册在Spring容器中。

所以我想知道@Configuration的用途是什么,然后@Controller是否将注册我的bean而不需要在spring配置xml文件中声明它们


阅读 1010

收藏
2020-04-18

共2个答案

一尘不染

@Configuration 是Spring 3中引入的基于Java的配置机制的核心。它提供了基于XML的配置的替代方法。

因此以下两个片段是相同的:

<beans ...>
    <context:component-scan base-package="my.base.package"/>
    ... other configuration ...
</beans>

和:

@Configuration
@ComponentScan(basePackages = "my.base.package")
public class RootConfig {
    ... other configuration ...
}

在这两种情况下,Spring都会在内部my.base.package和下方扫描以注释的类,@Component或以元注释的其他注释之一,@Component例如@Service

2020-04-18
一尘不染

从Book Pro Spring Integration

@Configuration类与常规@Components类一样,除了带注解的方法@Bean用于工厂Bean。请注意,@Component带有@Bean注释方法的a的工作方式相同,只是不遵守范围,并且@Bean方法被重新调用(未缓存),因此它@Configuration是首选方法,即使它需要CGLIB

2020-04-18