Spring 中的@Configuration 和@Component 有什么区别?

新手上路,请多包涵

@ComponentScan 使用 @Configuration@Component --- 创建bean。交换时,这两个注释都可以正常工作。那有什么区别呢?

原文由 gaurav sood 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 414
2 个回答

@Configuration 表示一个类声明了一个或多个@Bean 方法,并且可以由 Spring 容器处理以在运行时为这些 bean 生成 bean 定义和服务请求

@Component 表示一个注解类是一个“组件”。当使用基于注解的配置和类路径扫描时,这些类被认为是自动检测的候选对象。

@Configuration 使用@Component 进行元注解,因此@Configuration 类是组件扫描的候选对象

你可以在这里看到更多:

http://docs.spring.io/spring-framework/docs/4.0.4.RELEASE/javadoc-api/org/springframework/context/annotation/Configuration.html

@Configuration 也是一个@Component,但@Component 不能像@Configuration 那样工作。

原文由 reos 发布,翻译遵循 CC BY-SA 4.0 许可协议

其实答案并不完整,是不是真的:

@Component 表示一个注解类是一个“组件”。当使用基于注解的配置和类路径扫描时,这些类被认为是自动检测的候选对象。

但是您确实可以创建 ie MyConfiguration.java 类,然后使用 @Component 进行构造型并向其添加 @Beans 声明。通过这种方式,它将看起来像一个配置,主要区别在于当带注释的类 @Configuration @Bean 注释的方法是使用 CGLIB 的代理,它在第一个返回 bean 之后的代码调用中进行从上下文而不是再次执行方法并创建另一个实例,就像将 @Component 与 @Bean 一起使用时发生的那样

原文由 Juan Rada 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题