@Configuration注解和@Component注解

@Configuration注解和@Component注解

http://img1.sycdn.imooc.com//climg/611fb9bb09eebc0520230884.jpg

如上图的配置映射类用的是@Configuration类注解,为什么不是用@Component注解呢,@Configuration注解不是通常用于配置比如说有一些@Bean注解的方法时候才会用吗,请问这两个注解的区别是什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

@Configuration和@Component都是使用于配置类上以代替XML文件中<beans>标签;
@Configuration是@Component的扩展二者都可以搭配@Bean注解用,@Bean主要用在方法上,用作属性的注入。

@Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。

@Component中所有带 @Bean 注解的方法每次调用返回的都是新的实例。

祝学习愉快~


  • 动态代理,因此调用该方法返回的都是同一个实例。


    什么是动态代理?为什么要返回同个实例

    2021-08-30 10:07:40
  • 同学你好,1、@Configuration是指定该类是一个配置类、等价于一个spring的配置文件。

    2、代理是指为一个目标对象提供一个代理对象, 并由代理对象控制对目标对象的引用. 使用代理对象, 是为了在不修改目标对象的基础上, 增强目标对象的业务逻辑。

    而动态代理是并不存在代理类, 代理对象直接由代理生成工具动态生成,而不会像静态代理会为每一个业务增强都提供一个代理类, 由代理类来创建代理对象。

    3、@Bean该注解是写在方法上,表明使用此方法创建一个对象,并且放入spring容器。

    4、在@Configuration中加上@Bean去注册一个bean 对象然后进行绑定,同学可以理解为它是通过 cglib 来代理@Bean 方法的调用,所以调用这个方法返回的是同一个对象。

    祝学习愉快~

    2021-08-30 14:45:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师