我遇到了Spring 3提供的两个注释(@Component和@Configuration),我对它们之间有些困惑。 这是我读到的有关@Component的内容
将此“ context:component”放入bean配置文件中,这意味着在Spring中启用自动扫描功能。基本包指示组件的存储位置,Spring将扫描此文件夹并找出Bean(用@Component注释)并将其注册在Spring容器中。
所以我想知道@Configuration的用途是什么,然后@Controller是否将注册我的bean而不需要在spring配置xml文件中声明它们
@Configuration 是Spring 3中引入的基于Java的配置机制的核心。它提供了基于XML的配置的替代方法。
@Configuration
因此以下两个片段是相同的:
<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。
my.base.package
@Component
@Service
从Book Pro Spring Integration
@Configuration类与常规@Components类一样,除了带注解的方法@Bean用于工厂Bean。请注意,@Component带有@Bean注释方法的a的工作方式相同,只是不遵守范围,并且@Bean方法被重新调用(未缓存),因此它@Configuration是首选方法,即使它需要CGLIB
@Components
@Bean