Spring中的@Configuration注解你真的了解吗?

作者&投稿:线翟 (若有异议请与网页底部的电邮联系)
~ 环境:Springboot2.3.12.RELEASE

如下:

输出:

将上面的@Configuration注解换成@Component后再次运行:

多个实例。

使用@Configuration注解的类会为何会保证多次方法的调用返回的是同一个实例?

创建上下文最核心的就是注册了一个 BeanFactory 处理器

跟踪createApplicationContext方法

进入 ApplicationContextFactory

进入 AnnotationConfigServletWebServerApplicationContext

进入 AnnotatedBeanDefinitionReader 构造方法

进入 AnnotationConfigUtils#registerAnnotationConfigProcessors 方法

进入 AnnotationConfiguUtils#registerAnnotationConfigProcessors 方法

以上在创建Spring上下文对象的时候注册了一个非常核心的处理器 ConfigurationClassPostProcessor 该类会处理带有@Configuration注解的类。

这里就会执行上一步中注册的 BeanFactoryPostProcessor 。

上面注册的 ConfigurationClassPostProcessor 实现了 BeanFactoryPostProcessor 接口

跟踪refreshContext方法,进入到如下代码执行

进入invokeBeanFactoryPostProcessors方法

进入invokeBeanfactoryPostProcessors方法

注意ConfigurationClassPostProcessor实现了 BeanDefinitionRegistryPostProcessor 也实现了 BeanFactoryPostProcessor 接口,这里方法的执行是会先执行 BeanDefinitionRegistryPostProcessor 的回调方法,最后再执行 BeanFactoryPostProcessor 中的回调方法。

执行流程为:

进入 ConfigurationClassPostProcessor#postProcessBeanFactory 方法

接着上面进入enhanceConfigurationClasses方法

进入 ConfigurationClassEnhancer#enhance 方法

进入 BeanMethodInterceptor 类

进入resolveBeanReference方法

完毕!!!


c语言中的“ # ”怎么读?
最近”盘“字很流行,盘是什么意思?为什么能成为网络热词?

char a='123';printf("%c",a); 为什么输出的总是只有3,一个字符输出是...
哥们你这玩笑可是开大了 char a = '123';O(∩_∩)O哈哈哈~一个字符变量容纳3个字符啊 应该用字符串的 const char* p = "123";printf("%s", p);

C语言程序设计 兔子产崽问题
include <stdio.h> main(){ int i,tu1,tu2,tu3,m;tu1=1;tu2=1;pringf("请输入月份数(要求不大于24)");scanf("%d",&m);if(m==1||m==2){ printf("有一对兔子");} else if(m<2&&m<=24){ for(i=3;i<=m;i++){ tu3=tu1+tu2;tu1=tu2;tu2=tu3;} printf("...

英语选择题
选C surpring 令人惊讶的某事物 surprised 惊讶的 所以你们老师可能说过surprised修饰人,surpring 修饰物。但这说的太绝对 这个题目就是一例,哈哈。不过这个题目一定有很多争议吧,不严格,随便自己理解了,正规考试不会这样出的。我的理解是 这里是指她惊讶的表情,不是指她的表情令人惊讶,故选...

一些C语言题目!求高手答疑!谢谢了!!!
4。\/\/输出以下结果 4,2 Press any key to continue 我输出的就是4,2 在括号中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。例如:int a,b,c;如果这样 c=a,b;,c是a,如果是这样c=(a,b),c就是b 所以(x--,--y)是4 而x...

128-255之间有ASC字符吗?没有呀,有一道C语言编程题,让输出128-255间的...
128-255之间制表符 在汉字系统下,结果不可预计 int i;for(i=128;i<=255;i++){ printf("%c ",i);}

我想要恶作剧之吻插曲<后悔>的伴奏!
http:\/\/www.11670.com\/pring\/website\/y\/9860.php?a=5&b=511575&c=1240&d=1477&e=60&g=&k=null&exs_1=&x=

初一奥数题(200分!)
3。这道题没个图没法说清楚,所以我用坐标来说,你解析法应该懂吧。首先在平面上一个边长为1的正三角形,至少有两个点是同色的。所以我随便找两个点,相距1,不妨让这两个点是白色的。我把它放到坐标系中,令(0,0)点是红色的,(0,1)点是白色的,然后用反证法,先假定这个命题是不成立的,...

紧急求助!!!谁帮我翻译<<哈佛大学研究生谋杀案>>
coakley说,她的决定,推动第一年学士学位课程谋杀源于更从案件事实及被告的行为后刺伤比从种族或阶层的问题。 “基于医学证据的情况下,伤口colono遭受的是致命伤。被告知道他造成了致命的伤口, ”她说。陪审员拒绝发表任何评论向媒体有关判决。pring -威尔逊似乎有点somber和坚决,因为他被拘留。他将立即...

C语言 将十进制整数化成任意进制的数
将任意进制的整数化成十进制整数 一、目的和要求 1.应用循环进行幂运算。2.掌握其它进制的数化成十进制数的计算方法。3.转换的结果正确。二、实验内容 1.键盘上任意输入一个任意进制的整数及它的进制。2.根据其它进制的数化成十进制数的计算方法,编写程序将其转换成十进 制的数。三、算法 设...

连南瑶族自治县15620884550: spring 中 Component和@Configuration分别是什么意思 -
苏力利美: Spring 注解@Component,@Service,@Controller,@Repository Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller.

连南瑶族自治县15620884550: springmvc常用的注解有哪些 -
苏力利美: 1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常...

连南瑶族自治县15620884550: @configuration注解怎么获取spring的properties配置 -
苏力利美: 你就当成xml配置就行了,实现方法不同而已,一个是读取xml,一个是读取annotation,然后的步骤大多一样了.

连南瑶族自治县15620884550: Spring中@Controller和@RestController之间的区别 -
苏力利美: 1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求2. Controller, RestController的不同点 @Controller标识一个Spring类是Spring MVC controller处理器 @RestController: @RestController是@Controller和@...

连南瑶族自治县15620884550: Spring中的@代表什么 -
苏力利美: 使用注解的方式. @Resource、@Autowired、@RequestMapping、@Controller这几种都是spring常见的注解.

连南瑶族自治县15620884550: 如何spring使用@value注解读取配置文件的值 -
苏力利美: 首先在spring的核心配置文件中加载 参数配置文件 然后 @Value("${xxx}") private String xxx

连南瑶族自治县15620884550: SpringMVC当中支持的注解有哪些 -
苏力利美: spring mvc常用的注解:个介绍. @Controller @Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,你也可以自己指定,如下 方法一: @Controller public class TestController {}方法二: @Controller("...

连南瑶族自治县15620884550: Spring 注释 Autowired 和@Resource 的区别 -
苏力利美: Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource、 @PostConstruct及@PreDestroy.1. @Autowired @Autowired是Spring 提供的,需导入 Package:org.springframework.beans.factory....

连南瑶族自治县15620884550: Java 如何定义一个@形式的注解?如@Override, 戓SpringMvc中的@Contro -
苏力利美: //***就是你定义的注解 public @interface ***{ }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网