@bean注解
2026/5/9 6:27:49 网站建设 项目流程

@Configuration@Component@Controller等

@Configuration@Component@Controller都属于 Spring 标识组件类的注解,核心关系是:@Component是最基础的通用注解,@Configuration@Controller都是@Component的派生注解

  1. @Component:是 Spring 组件扫描的根注解,标注的类会被 Spring 容器识别并实例化为 Bean,适用于通用的组件类。
  2. @Controller:是分层架构专用注解,继承自@Component,专门标注 MVC 架构中的控制器类,Spring MVC 会识别该注解并处理请求映射(如@RequestMapping)。
  3. @Configuration:同样继承自@Component,专门标注配置类,类中可通过@Bean注解定义第三方组件或复杂逻辑的 Bean;Spring 对@Configuration类会做CGLIB 动态代理,确保@Bean方法调用时返回单例 Bean,而普通@Component类的@Bean方法则不会有此代理增强。

@Bean和@Component等

  1. @Component标注的类本身是单例 Bean(默认作用域singleton),类中用@Bean定义的方法,生成的 Bean 作用域默认也是singleton
  2. 不管是在@Component还是@Controller、@Configuration这类派生注解类中,@Bean的默认作用域都是单例,只有添加@Scope("prototype")注解,才能将对应的 Bean 设置为多例。
  3. 唯一的区别是@Configuration类会被 CGLIB 代理,保证内部@Bean方法互相调用时返回单例;而@Component及派生类不会被代理,内部@Bean方法直接调用会生成新实例,但容器中管理的该 Bean 仍然是单例。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询