【发布时间】:2015-05-14 18:23:38
【问题描述】:
@Component 类将在 spring 中以什么顺序创建。是 @configuration 注释的类将首先创建吗?我们可以指定创建顺序吗?
【问题讨论】:
标签: spring spring-boot
@Component 类将在 spring 中以什么顺序创建。是 @configuration 注释的类将首先创建吗?我们可以指定创建顺序吗?
【问题讨论】:
标签: spring spring-boot
@Component 和@Configuration 是不同类型的注解。
@Component 和类似的注解(@Service、@Repository 等)及其 JSR-330 对应项,并允许您使用 <context:component-scan/> 或 @ComponentScan 声明要通过自动扫描拾取的 bean为类注册bean定义,所以大致相当于在XML中用<bean ... />标签声明指定的bean。此 bean 类型将遵守标准代理创建策略。
@Configuration 注解被设计为 XML 配置文件的替换。要创建 @Configuration 注释 bean,Spring 将始终使用 CGLIB 子类化 @Configuration 注释类,覆盖其 @Bean 注释方法以将其替换为 bean 查找方法,以使单例 bean 仅创建一次。尽管如此,@Configuration 带注释的类仍然能够使用带注释的(@Autowired、@Inject 等)字段和属性从容器请求 bean(甚至还有其他 @Configuration 带注释的 bean)。
现在回答你的问题,你必须用@Configuration 注释类,然后用@ComponentScan(basePackages = { "com.test.*" }) 注释,你不能指定创建顺序。
【讨论】:
@Configuration,就像@Service也是@Component一样,在进行组件扫描时也会被检测到。