pring @Configuration 和 @Component 区别
一句话概括就是 @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
最新文章
- word20161222
- texlive2015+texstudio
- Codeforces Round #189 (Div. 1) B. Psychos in a Line 单调队列
- delphi 如何知道 Treeview,Listview 当前最上面显示的节点
- posix thread API列表
- flash引入
- Java基础知识强化之IO流笔记09:File类功能
- 你想不到的IT运维前途
- poj 2051 Argus(优先队列)
- 转-Linux系统下安装rz/sz命令及使用说明
- OpenStack - liberty CentOS 7
- bootstrap快速入门笔记(四)-less用法指南, mixin和变量
- CSS规则
- dddquickly
- Java基本类型内存字节数
- c# 调apicontroller
- 二: python基础数据类型(int,
- linux 远程执行命令
- .Net Core项目在Docker上运行,内存占用过多导致pods重启的问题
- e808. 建立菜单栏,菜单,菜单项