栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

@Component与@Configuration区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号