关于SpringBoot从1.4升级到2.2.6和SpringCloud版本升级到Hoxton.SR4的注意事项

 原创在CSDN找

目录

一、升级步骤

二、常见问题及解决方案

        1.mongoDB升级后因许多类及方法都改变了,特此说明下:

        2.tomcat的修改:

        3.ribbon由原先的

        4.eureka由原先的

        5.hystrix由原先的

         6.redis的修改

        7.注意引用的jar或配置中存在二级及以上的路径时不要采用驼峰名:

        8.mysql注意事项:

        9.报错:Caused by: java.lang.ClassNotFoundException: javax.jms.JMSContext


一、升级步骤

将SpringBoot版本升级为目前最新的稳定版本2.2.6

SpringCloud版本升级为对应匹配Hoxton.SR4,官网说要5以上但其他项目均用的4也便保持一致,8的版本可能有问题,未使用

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
</parent>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

二、常见问题及解决方案

        参考文档地址:springboot 1.4.0升级2.2.6版本后遇到的问题总结 - 表演给自己看的认真 - 博客园 (cnblogs.com)

        1.mongoDB升级后因许多类及方法都改变了,特此说明下:

        1)mongoTemplate的更新方法回参由WriteResult改变为UpdateResult, UpdateResult的wasAcknowledged方法可以判断返回是否正确.

        2)new Sort(Sort.Direction.DESC,"sortNo") mongo的排序sort给为了私有,需要修改为Sort.by(Sort.Direction.DESC,"sortNo") 解决

        3)BasicDBObject在作为参数进行查询时,需要换成org.bson.Document来代替

        4)启动时会一直访问Mongo端口,确认配置中无用到mongo的地方,在启动类排除mongo的自动装配.

        2.tomcat的修改:

        1)项目报错web server未启动,添加<spring-boot-starter-web>依赖解决

        2)项目之前以java代码形式对tomcat的post请求大小做限制,升级后找不到对应的类,改为在yml文件设置tomcat的大小

        #-1表示不受限制,此处说明下若之前版本设置为0也可以表示无限制,升级后只有-1表示无限制(百度搜)

        server.tomcat.max-http-post-size: -1

        3)项目升级后启动后存在一直访问rabbitmq端口的报错问题,因之前使用的cloud版本HOXTON.SR8,将cloud的修改为HOXTON.SR4便不会访问

        3.ribbon由原先的

<artifactId>spring-cloud-starter-ribbon</artifactId>

改为<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

        4.eureka由原先的

 <artifactId>spring-cloud-starter-eureka</artifactId> 

改为 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 

        5.hystrix由原先的

<artifactId>spring-cloud-starter-hystrix</artifactId>

改为<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>

         6.redis的修改

        1)redis由原先的<artifactId>spring-boot-starter-redis</artifactId>

        改为:<artifactId>spring-boot-starter-data-redis</artifactId>

        2)启动报java.lang.NoClassDefFoundError: redis/clients/jedis/JedisPoolConfig,

解决:加此可以减少redis的报错,加了没用到也没关系嘛

        <!-- 解决版本冲突而加的  -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

        3)启动时报错:

        这个错你们不一定碰到,当时翻资料很久也没有找到,后来对比其他升级完成的项目配置文件才解决,也没太明白哪里的问题.

主要有以下几个报错:

1.[LSV/01][ERROR][2022-02-16T09:45:20.952]Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
2.Caused by: org.springframework.data.redis.RedisConnectionFailureException:
 Cannot get Jedis connection; nested exception isredis.clients.jedis.exceptions.JedisConnectionException: 
Could not get a resource from the pool
3.Caused by: redis.clients.jedis.exceptions.JedisDataException: 
NOAUTH Authentication required.

自己分析主要是权限校验问题

解决:

redis:
    host: redis地址
    port: 端口
    timeout: 超时时间
    database: 连接库
    userHost: 跟上面一致
    userPort: 跟上面一致
    userDatabase: 跟上面一致
    password: redis的连接密码
    userPassword: 跟上面一致
我的解决主要是添加了userpassword配置.

        7.注意引用的jar或配置中存在二级及以上的路径时不要采用驼峰名:

原因:spring.rabbitmq-AC1231 会对AC报错

解决:修改为spring.rabbitmq-ac1231,spring boot 2.x 中对配置文件中名称的命名规范进行了强制约束,需要使用kebab格式,不能使用java中的驼峰式写法了,分隔符使用 ’-‘ 来分隔.

        8.mysql注意事项:

        1)升级后要加上时区,如:mysql://xx:xx:xx:xx:3306/库名?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai

        2)数据库驱动要加cj,如:com.mysql.cj.jdbc.Driver

        3)项目存在多数据源时记得配置文件的url修改为jdbc-url

        9.报错:Caused by: java.lang.ClassNotFoundException: javax.jms.JMSContext

解决:查看有没有引入activemq-client依赖或其他依赖与spring-jms依赖冲突,在冲突依赖中添加

<exclusions>

    <exclusion>

      <groupId>org.apache.geronimo.specs</groupId>

    <artifactId>geronimo-jms_1.1_spec</artifactId>

    </exclusion>

</exclusions>

总结:每个人的报错可能不一样,细心点再对比下其他升级后的项目基本都可以找到原因,我这里的解决并不完全,有新的报错解决方案欢迎讨论,谢谢,希望大家在这条路一直坚持下去!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值