系列二十五、@Configuration的作用及解析原理

news/2025/2/22 6:39:04/

一、作用

@Configuration是用来代替传统的xml的配置方式配置bean的。

二、不加@Configuration注解不能配置bean吗

能。

三、加与不加的区别

3.1、区别

        加了@Configuration注解,会为配置类创建cglib动态代理,@Bean方法的调用就会通过容器getBean进行获取,保证当@Bean方法进行互调时,@Bean是单例的

3.2、原理

(1)创建Spring上下文的时候会注册一个解析配置的处理器ConfigurationClassPostProcessor

(2)调用invokeBeanFactoryPostProcessors(beanFactory)时,就会去调用postProcessBeanDefinitionRegistry进行解析配置(解析加了@Configuration、@Component、@Import、@Bean的类,目的是为了注册BeanDefinition)

(3)ConfigurationClassPostProcessor.postProcessBeanFactory去创建cglib动态代理;

(4)当@Bean方法进行互调时,会通过cglib进行增强,通过调用的方法名作为bean的名称去IOC容器中获取,进而保证了@Bean方法的单例,


http://www.ppmy.cn/news/1182428.html

相关文章

网络协议--TCP的成块数据流

20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。本章我们将介绍TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必…

Table-GPT:让大语言模型理解表格数据

llm对文本指令非常有用,但是如果我们尝试向模型提供某种文本格式的表格数据和该表格上的问题,LLM更有可能产生不准确的响应。 在这篇文章中,我们将介绍微软发表的一篇研究论文,“Table-GPT: Table- tuning GPT for Diverse Table…

【MySQL数据库重点】第二节:MySQL基础知识(基本操作)

目录 一:数据库的操作 1.显示数据库 2.创建数据库 3.使用数据库 4.删除数据库 二:常用数据类型 1.数值类型:整型和浮点型 2.字符串类型 3.日期类型 三:表的操作 1.查看表结构 2.创建表 3.删除表 一:数据库…

Linux下自动挂载U盘或者USB移动硬盘

最近在折腾用树莓派(实际上是平替香橙派orangepi zero3)搭建共享文件服务器,有一个问题很重要,如何在系统启动时自动挂载USB移动硬盘。 1 使用/etc/fstab 最开始尝试了用/etc/fstab文件下增加:"/dev/sda1 /home/orangepi/s…

EfficientViT:高分辨率密集预测的多尺度线性关注

标题:EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction 论文:https://arxiv.org/abs/2205.14756 中文版:【读点论文】EfficientViT: Enhanced Linear Attention for High-Resolution Low-Computation将soft…

基于单片机设计的智能窗帘控制系统

一、前言 智能家居技术在近年来取得了巨大的发展,并逐渐成为人们日常生活中的一部分。智能家居系统带来了便利、舒适和高效的生活体验,拥有广泛的应用领域,其中之一就是智能窗帘控制系统。 传统窗帘需要手动操作,打开或关闭窗帘…

Three.js 基础纹理贴图

本文简介 带尬猴,我嗨德育处主任 尽管 Three.js 文档已经比较详细了,但对于刚接触 Three.js 的工友来说,最麻烦的还是不懂如何组合。Three.js 的功能实在太多了,初学者很容易被大量的新概念冲晕。 本文主要讲解入门 Three.js 必…

尚硅谷大数据项目《在线教育之实时数仓》笔记004

视频地址:尚硅谷大数据项目《在线教育之实时数仓》_哔哩哔哩_bilibili 目录 第8章 数仓开发之DIM层 P024 P025 P026 P027 P028 P029 P030 第8章 数仓开发之DIM层 P024 package com.atguigu.edu.realtime.app.func;import com.alibaba.druid.pool.DruidDat…