SpringBoot 1.5.12单体架构升级微服务SAAS化记录

拆分背景:

  • 项目采用springboot 1.5.12.REALEASE版本的单体架构,技术比较老,需要进行升级。
  • 各个模块功能比较独立,目前是揉和在一起,要进行服务拆分,需要做到可插可拔。
  • 每次修改bug和新需求开发,需要给每个客户进行一次部署,浪费人力和运营成本。

技术选型:

  • SpringBoot升级为2.3.11.REALEASE
  • SpringCloud版本:Hoxton.SR8
  • OpenFeign:提供远程调用接口
  • gateway:网关,授权
  • ribbon:客户端负载均衡
  • seta:分布式事务
  • rocketmq:普通消息订阅推送
  • nacos: 注册中心,配置中心
  • ....

项目依赖整合 

在父控pom.xml升级项目依赖版本  版本依赖查看

application.yml:
logging:
    level: debug
    path: logs-prod/
    file: xx.log
改为:
logging:
  level: debug
  file:
    path: logs/
    name: xx.log

# Tomcat
server:
    tomcat:
        uri-encoding: UTF-8
        max-threads: 1000
        min-spare-threads: 30
    port: 8602
    context-path: /xx
改为
# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    threads:
      min-spare: 30
      max: 1000
  port: 8380
  servlet:
    context-path: /xx



        UTF-8
        UTF-8
        1.8
        Hoxton.SR8
        2.3.11.RELEASE
        2.2.5.RELEASE
        true
 


        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        




        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${java.version}
                    ${java.version}
                    ${project.build.sourceEncoding}
                
            
        

升级版本遇到问题

验证框架出现问题

SpringBoot 1.5.12单体架构升级微服务SAAS化记录_第1张图片

SpringBoot 1.5.12单体架构升级微服务SAAS化记录_第2张图片

导入validation-api和hibernate-validator包即可

 
            javax.validation
            validation-api
 
 
            org.hibernate
            hibernate-validator
            5.3.6.Final
            compile

log4j出现问题

导入log4j包即可


        
            log4j
            log4j
            1.2.17
        

SpringBoot启动类的注解不能加载

去掉SpringBootServletInitializer,查看SpringBootServletInitializer的注释得知,只有在构建war文件和部署时需要,运行嵌入式容器不需要。

SecurityAutoConfiguration:    去掉

WebMvcConfigurerAdapter: 替换为实现WebMvcConfigurer

再次启动抛出异常

Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvider
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.getDeclaredMethods(Class.java:1975)
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463)
	... 21 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 25 common frames omitted

解决方案:升级druid.version版本即可

升级完版本之后要注意:因为之前是1.5.19的版本,升级之后还有残留的引用包,可以在dependency中查看版本,然后在maven仓库中删除所有之前残留的版本包,然后再重新启动idea中进行clean,刷新项目即可。

你可能感兴趣的:(工作相关,spring,java,spring,spring,boot,后端)