赞
踩
有个新项目需要启动。
因为有部分业务的请求相对来讲比其它的要强的多。
而且还受到第三方的影响较深
基于这种情况,微服务的使用方式就提上了日程。
原来两年前的微服务架构,考虑到技术的变化,就准备升级了下包
看到最新的2021版本已经出炉了。
解决了那么多的bug,不升级都对不起自己了,关键这个还是新项目,没有负担。
那么就升级最新版本
前面都很OK,在启动服务的时候,提示了以下错误。
- ***************************
- APPLICATION FAILED TO START
- ***************************
-
- Description:
-
- The bean 'redisTemplate', defined in class path resource [com/XX/XX/redis/autoconfigure/RedisAutoConfigure.class], could not be registered. A bean with that name has already been defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class] and overriding is disabled.
-
- Action:
-
- Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
上面说是因为bean名称重复了,设置spring.main.allow-bean-definition-overriding=true来解决。
但是我实际再bootstrap.yaml中已经设置了当前值。
那么结果已经很明显了,就是spring.main.allow-bean-definition-overriding=true没有生效。
既然没有生效,那就让他生效好了。
生效的方式有两个
一个是修改代码,在启动的main方法中强制设置allow-bean-definition-overriding=true
- public static void main(String[] args) {
- SpringApplication application = new SpringApplication(ApplicationRun.class);
- application.setAllowBeanDefinitionOverriding(true);
- application.run(args);
- }
新的版本中,springcloud把bootstrap等单独拆分了出来。
所以需要单独引入bootstrap包
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-bootstrap</artifactId>
- </dependency>
这两种方案,重新编译后运行都一切正常
升级新版本好处多多,但是版本升级不要一下跨度太大。这样的话相关的包之间的引用就会产生一些版本不兼容的问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。