本文主要是介绍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踩坑备忘!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!