源码角度分析@configuration和@component不同
1.@configuration是@component的内部类,@configuration包含@component注解。
2.@configuration中所有带@Bean都会被CGLIB动态代理,调用此配置类中的方法都会返回同一个实例。@component不会被代理,调用配置类中的方法都会新建一个实例。
3.@configuration标注的类要求:
1.必须是类(不可以是工厂返回的实例),不能是final类(final不可CGLIB动态代理)
2.配置类不可以是native方法
3.嵌套配置类需要声明为static
4.@Bean方法不会进一步反过来创建配置类,即便有@configuration,只会作为不同的Bean
加载流程:
1.再springboot程序,run方法中,有个refreshcontext(),的refresh()
2.obtainFreshBeanFactory 将ConfigurationClassPostProcessor 注册到beanDefinition中
3.invokeBeanFactoryPostProcessors 实例化ConfigurationClassPostProcessor ,将配置类带@configuration的配置类添加标志位FULL,@component、@ComponentScan添加Lite。
4.通过invokeBeanFactoryPostProcessors将FULL的配置类通过Enhancer再字节码层面生成CGLIB子类,替换原来的@Bean方法。
5.finishBeanFactoryInitialization实例化非懒加载对象。
相关文章:
源码角度分析@configuration和@component不同
1.configuration是component的内部类,configuration包含component注解。 2.configuration中所有带Bean都会被CGLIB动态代理,调用此配置类中的方法都会返回同一个实例。component不会被代理,调用配置类中的方法都会新建一个实例。 3.configura…...
实现分布式事务:Java与MySQL的XA事务协调
目录 一、什么是XA事务 二、Java中的XA事务支持 三、MySQL的XA事务协调 四、注意事项和最佳实践 五、基于 java 语言的开发工具 六、小结 分布式事务是在跨多个数据库或服务之间保持一致性的重要机制。Java与MySQL的XA(eXtended Architecture)事务…...
如何通过CRM系统进行成功的客户生命周期管理?
吸引新客户,提供无与伦比的服务或商品,以及建立成功的客户关系,是每个企业努力追求的目标。然而,实现这些目标需要的不仅仅是良好的愿景,还需要实施客户生命周期管理流程。 什么是客户生命周期管理? 客户…...
Leetcode 977. 有序数组的平方
题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…...
vue3中使用toValue
toValue() 是一个在 3.3 版本中新增的 API。它的设计目的是将 ref 或 getter 规范化为值。如果参数是 ref,它会返回 ref 的值;如果参数是函数,它会调用函数并返回其返回值 示例...
阿里云国际版CDN使用教程!
当网站流量达到一定值后,势必会造成网站访问卡堵,这时候阿里云CDN将会一个很好的选择,阿里云 CDN 是由全球分布式边缘节点组成的虚拟网络。阿里云 CDN 可减少源站负载,防止网络拥塞,使用阿里云 CDN 加速图像、小文件、…...
【docker】Dockerfile构建镜像常用指令:
文章目录 一、常用命令:二、注意事项:三、add和copy的区别:【1】ADD 指令支持自动解压缩功能【2】ADD 指令可以从 URL 复制内容【3】 ADD 指令具有隐式的文件拷贝功能 一、常用命令: Dockerfile是一个文本文件,包含了一条条的指令,在基于指定的镜像上&am…...
Java课题笔记~ 会话跟踪
3.1 Cookie 【案例1 记住密码】 实现效果 当勾选“记住密码”复选框时,下次访问登录页面,会自动记住账号,密码信息。 【案例2 上次访问时间】 实现效果 首次登录,显示“欢迎您,XXX” 下次登录,显示“欢迎您…...
HbuildX生成安卓签名证书
HbuildX生成安卓签名证书 安装和配置JRE环境 根据此链接安装和配置JRE环境 生成签名证书 keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystoretestalias是证书别名,可修改为自己想设置的字符,建议…...
在Ruoyi中采用Ajax动态生成Echarts图表实践
前言 在之前博文中,我们讲解了如何使用java在后台进行Echarts的图表生成组件,博文如下: 序号 博客连接1一款基于JAVA开发的Echarts后台生成框架2Ruoyi单体项目与Echarts4.2.1地图集成时的思路及解决办法3解决Ruoyi单体版本集成Echarts多图表时…...
资讯速递 | ArkUI-X 预览版已正式开源!
OpenHarmony项目群技术指导委员会(以下简称“TSC”)-跨平台应用开发框架TSG所孵化项目 —— ArkUI-X,近期已正式开源 ,开发者基于一套主代码,就可以将在OpenHarmony上开发的精美、高性能应用同时运行在Android、iOS等其…...
HTML <select> 标签
实例 创建带有 4 个选项的选择列表: <select><option value ="volvo">Volvo</option><option value ="saab">Saab</option><option value="opel">Opel</option><option value="audi"…...
Flutter:文件上传与下载(下载后预览)
Dio dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。 这个就不介绍了,网上有很多的封装案例。 background_downloader 简介 适用于iOS,Android,MacOS,Windows和L…...
[前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互
在这篇文章中,我将介绍Ajax的基本概念、原理、优缺点、实现方法和应用场景,以及如何使用它来实现Web页面的异步交互。还将给一些简单而实用的例子,让你可以跟着我一步一步地编写自己的Ajax代码。 目录 一、什么是Ajax 二、如何使用Ajax &a…...
ssh-keygen 做好免密登录后不生效
免密说明 通常情况下,我们ssh到其他服务器需要知道服务器的用户名和密码。对于需要经常登录的服务器每次都输入密码比较麻烦,因此我们可以在两台服务器上做免密登录,即在A服务器可以免密登录B服务器。 在A服务器上登录B服务器时,…...
【Java可执行命令】(十八)可视化监控和管理工具 jconsole:获取 JVM的内存使用情况、线程活动、GC 行为等重要指标的可视化工具 ~
Java可执行命令之jconsole 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 注意事项 4️⃣ 应用场景🌾 总结 1️⃣ 概念 jconsole 是 Java Development Kit (JDK) 自带的一款图形化监控和管理工具。它旨在提供一个简单而强大的界面,用于监视和管…...
leetcode做题笔记66
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 思路一:模拟题意 int* plusOne(i…...
【docker】设置 docker 国内镜像报错,解决方案
一、报错: [rootlocalhost ~]# systemctl restart docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.二、原因…...
mac安装nvm管理工具遇到的问题和解决方法
nvm 是一款可以管理多版本node的工具,因为是刚买没多久的电脑之前用的都是windows,昨天折腾了一下午终于倒腾好了 第一步: 卸载电脑已有的node;访问nvm脚本网址,另存为到电脑上任何目录,我是放在桌面上的…...
DocX 生成Word
当然,这里是一个使用DocX库在.NET Core中操作Word文档的简单示例: 首先,确保你在项目中安装了DocX库。你可以在NuGet包管理器中搜索并安装DocX。 然后,使用以下代码来创建一个简单的Word文档并添加一些内容: using …...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
