Springboot3.2踩坑备忘!

2023-12-14 22:28
文章标签 备忘 springboot3.2

本文主要是介绍Springboot3.2踩坑备忘!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在将一个项目的SpringBoot从2.7.8升级到3.2.0后,启动项目时报错,提示在自动装配时发现有2个同名的类,无法自动注入!发现同一个类被注入了2次,一次是以类全路径作为key(在入口扫描组件加过nameGenerator配置)注入的,一次是以类名作为key注入的,查了半天没发现问题,不清楚到底是升级导致的问题还是springboot新版本引起的问题。于是新建了一个springboot3.2的项目,在入口配置了组件扫描和nameGenerator后发现同一个类还是被注入了2次,当时就觉得很奇怪,于是在入口加一段代码,打印出所有Bean的名称检查:

    @Beanpublic CommandLineRunner commandLineRunner(ApplicationContext ctx) {return args -> {System.out.println("Let's inspect the beans provided by Spring Boot:");String[] beanNames = ctx.getBeanDefinitionNames();Arrays.sort(beanNames);for (String beanName : beanNames) {if(beanName.equalsIgnoreCase("testService") ||beanName.equalsIgnoreCase("com.example.demo.test.TestService")) {System.out.println(beanName);}}};}

打印后发现确实是注入了2次,查询了各种资料后发现不知道从哪个版本开始(反正2.7.8没这情况),入口的@SpringBootApplication注解会以默认方式注入bean,加了nameGenerator配置也没用,所以注入了2次。解决办法就是删除@SpringBootApplication注解,增加@EnableAutoConfiguration注解,启动后问题解决

这篇关于Springboot3.2踩坑备忘!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/494104

相关文章

Vi操作备忘

Vi操作备忘       Vi是Linux系统里面的一个屏幕编辑程序,在终端中使用。Vi对文件的修改是在文件的副本上进行的,除非编辑顺利,并保存之后才会用修改的副本替代原始文件,否则,修改的内容会全部放弃,重新回到原始文件。       Vi是一个优秀的代码工程师所必备的技能。故在此简述vi备忘。 1、可以在终端上,输入以下形式的命令行,进入vi编辑程序:       vi filename

Java100:javaSE备忘

char c='\u4e00' //汉字开始 char c='\u9fa5'//汉字结束 java 正则   正则表达式:  java.util.regex.Pattern     [] 匹配的一个字符     [^a] 一个非a的字符     [^abcd]一个非a,b,c,d的字符     [A-Z] 一个 A-Z 的字符     [a-z] 一个a-z的字符     [0-9] 一个0

java99:java 基础备忘

程序 = 算法+数据结构     算法:解决问题的步骤      数据结构:将数据按照某种结构来保存     好的数据结构 => 好的算法 char 可以存储一个中文字符(1个char是两个字节,一个中文字符也是两个字节) && 短路 常用 三目运算 int a = 1; int b = 2; int c = a > b ? c =0101 : c = 1010 boolean ? 1:2

Docker在CentOS上硬盘使用被占满的问题(备忘)

摘录至 https://github.com/yeasy/docker_practice/blob/master/image/rm.md#centosrhel-的用户需要注意的事项 在CentOS上,遇到过这个问题。没有细究过。正好看到,记录之 内容如下: CentOS/RHEL 的用户需要注意的事项 在 Ubuntu/Debian 上有 UnionFS 可以使用,如 aufs 或者 o

RocketMQ安装、部署(备忘)

RocketMQ 这段时间接触了不少 MQ 产品,印象最为深刻的,当属 RocketMQ 个人认为其架构设计的十分合理 官方地址: https://github.com/apache/rocketmq 使用下来,最开始的安装、部署,遇到不少问题,因此特地备忘下 主要问题均来至 JDK 版本比官方的新 安装相关 官方文档: https://rocketmq.apache.org/doc

golang 编译期设置变量值(备忘)

说明 本文演示给程序打上时间戳,并输出 目录结构 fananchong@localhost:~/test$ tree.├── go.mod├── g.sh├── main.go└── version└── version.go main.go package mainimport ("fmt""os""test/version")func main() {args := o

VSCode 中画 UML 图(备忘)

vscode-drawio vscode-drawio 是一款 vscode 插件,支持在 vscode 中画流程图、思维导图、 UML 图 github 地址: https://github.com/hediet/vscode-drawio 安装 在 vscode 插件窗口内,搜索 vscode-drawio ,安装即可 使用 在 vscode 中打开 .drawio 扩展名的文件,

YOLO环境搭建备忘教程

注:该文本是在完成anaconda、pycharm后进行的过程,请注意! 1、conda下创建一个新环境: conda create -n 环境名称 python=版本号   #注意各类代码的具体Python版本号 conda create -n Pysidey6 python==3.8.1   #注意:3.8.0运行PySide6会报错,运行不起来 2、删除环境: conda

space-vim安装及快捷键备忘

用了这么长时间的space-vim,逐渐衍生出更加复杂的需求。故这里做一个备忘: 1、标题在没有网络(不能连外网,可以连局域网)的机器上,安装space-vim 首先在另一台机器上,完全配置好space-vim打包以下几个目录的文件(我配置了file-manager,用于 【在~/.space-vim里面,配置let g:spacevim_layers += ['file-manager']】

QTimer备忘

1、定时器是在当前线程中执行的,实际上,它处于当前线程的事件循环中,如果想定时器放在单独的线程中执行,可以借助于moveToThread实现。 你可以把QTimer看作是一个能够产生定时事件的对象。当你启动一个QTimer时,你实际上是在告诉事件循环:“请在指定的时间后向我发送一个定时器超时事件(Timer Timeout Event)”。当事件循环检测到这个时间已经到达,它就会创建一个定时器超