@Component与@Configuration区别

@Configuration本质上还是@Component,并且@Configuration标记的类必须符合下面的要求:
1.配置类不能是 final 类、都必须声明为static
2.配置注解通常为了通过 @Bean 注解生成 Spring 容器管理的类,它通常是为了表示这是一个配置类,通过这个类来注册多个Bean
3.配置类能在方法中声明,不能是 private

重要区别

  • 如果使用 @Configuration 注解修饰的类,并且该注解中的 proxyBeanMethods 属性的值为 true,则会为这个 bean 创建一个代理类,该代理类会拦截所有被 @Bean 修饰的方法,在拦截的方法逻辑中,会从容器中返回所需要的单例对象。

  • 使用 @Component 注解修饰的类,则不会为这个 bean 创建一个代理类。 那么我们就会直接执行用户的方法,所以每次都会返回一个新的对象。

如果我们将 @Configuration 注解中的 proxyBeanMethods 属性的值设置为 false,那么它的行为是否就会跟 @Component 注解一样?

@Configuration(proxyBeanMethods = false)
public class Config {

	@Bean
	public Hello hello(){
		return new Hello();
	}
}

在这里插入图片描述
通过结果,我们可以得出结论是:如果将 @Configuration 注解中的 proxyBeanMethods 属性的值设置为 false,那么它的行为就会跟 @Component 注解一样。所以最大区别其实就是,一个使用了单例模式一个没有

参考大佬:https://juejin.cn/post/6873314485449261069

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值