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

从定义来看, @Configuration 注解本质上还是 @Component,因此 <context:component-scan/> 或者 @ComponentScan 都能处理@Configuration 注解的类。

@Configuration 标记的类必须符合下面的要求:

配置类必须以类的形式提供(不能是工厂方法返回的实例),允许通过生成子类在运行时增强(cglib 动态代理)。
配置类不能是 final 类(没法动态代理)。
配置注解通常为了通过 @Bean 注解生成 Spring 容器管理的类,
配置类必须是非本地的(即不能在方法中声明,不能是 private)。
任何嵌套配置类都必须声明为static。
@Bean 方法可能不会反过来创建进一步的配置类(也就是返回的 bean 如果带有 @Configuration,也不会被特殊处理,只会作为普通的 bean)。

加载过程

Spring 容器在启动时,会加载默认的一些 PostPRocessor,其中就有 ConfigurationClassPostProcessor,这个后置处理程序专门处理带有 @Configuration 注解的类,这个程序会在 bean 定义加载完成后,在 bean 初始化前进行处理。主要处理的过程就是使用 cglib 动态代理增强类,而且是对其中带有 @Bean 注解的方法进行处理。

-具体信息请看博主
原文:https://blog.csdn.net/isea533/article/details/78072133

还有一种解释

@configuration和@component之间的区别是:@Component注解的范围最广,所有类都可以注解,但是@Configuration注解一般注解在这样的类上:这个类里面有@Value注解的成员变量和@Bean注解的方法,就是一个配置类。

https://blog.csdn.net/qq_37057095/article/details/81184515

最新文章

  1. word20161222
  2. texlive2015+texstudio
  3. Codeforces Round #189 (Div. 1) B. Psychos in a Line 单调队列
  4. delphi 如何知道 Treeview,Listview 当前最上面显示的节点
  5. posix thread API列表
  6. flash引入
  7. Java基础知识强化之IO流笔记09:File类功能
  8. 你想不到的IT运维前途
  9. poj 2051 Argus(优先队列)
  10. 转-Linux系统下安装rz/sz命令及使用说明
  11. OpenStack - liberty CentOS 7
  12. bootstrap快速入门笔记(四)-less用法指南, mixin和变量
  13. CSS规则
  14. dddquickly
  15. Java基本类型内存字节数
  16. c# 调apicontroller
  17. 二: python基础数据类型(int,
  18. linux 远程执行命令
  19. .Net Core项目在Docker上运行,内存占用过多导致pods重启的问题
  20. e808. 建立菜单栏,菜单,菜单项

热门文章

  1. EJB3.0之事务
  2. [CQOI2014]和谐矩阵
  3. 联想Y700安装显卡驱动和CUDA8.0
  4. fastJson 之 JSONPath使用
  5. 20175330 实验一 《Java开发环境的熟悉》实验报告
  6. UIImage 类说明
  7. R实战 第十二篇:随机数
  8. HBase篇(1)-特性与应用场景
  9. centos安装RabbitMQ 3.7.9 (使用RPM)
  10. CSS3下的渐变文字效果实现