Choerodon Spring Boot 1.5.x迁移2.0.x指南

官方指南

spring boot 2.0 升级指南

Spring Boot Security 2.0升级指南

pom文件修改

  • choerodon-framework-parent升级为0.9.0.RELEASE
  • choerodon.starters.version升级为0.10.0.RELEASE
  • spring-cloud-starter-eureka => spring-cloud-starter-netflix-eureka-client
  • spring-cloud-starter-zuul => spring-cloud-starter-netflix-zuul
  • spring-cloud-starter-feign => spring-cloud-starter-openfeign
  • spring-cloud-starter-eureka-server => spring-cloud-starter-netflix-eureka-server

单元测试

单元测试报如下:

java.lang.IllegalStateException: Failed to transform class with name io.choerodon.iam.app.service.impl.AccessTokenServiceImplSpec. Reason: null
...
Caused by: java.util.ConcurrentModificationException
...

或者

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
...
Caused by: java.lang.NoClassDefFoundError: org/mockito/cglib/proxy/MethodInterceptor
...
Caused by: java.lang.ClassNotFoundException: org.mockito.cglib.proxy.MethodInterceptor
解决方法:
  • powermock.version 1.7.4 => 2.0.0-beta.5
  • powermock-api-mockito => powermock-api-mockito2
  • 添加指定版本javassist
        
            org.javassist
            javassist
            3.24.0-GA
        

如果单元测试里有自己mock的DiscoveryClient,需要在application-test.yml文件中将Spring boot 2.0自动注入的几个DiscoveryClient排除掉,否则会报primary bean冲突的问题

spring:
  autoconfigure:
    exclude:
      - org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration
      - org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration
      - org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration
      - org.springframework.cloud.client.discovery.composite.CompositeDiscoveryClientAutoConfiguration
      - org.springframework.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration

配置修改

  • spring.http.multipart => spring.servlet.multipart
  • management.port => management.server.port
  • 许多server.*属性 ( Servlet 特有的) 已经转移到server.servlet.*, 比如server.context-path --> server.servlet.context-path
  • security.ignored被移除,使用代码替代@Value("${security.ignored:/choerodon/**")
  • management.security.*去除,默认只有端点/health/info是暴露的,开放所有端点可以使用management.endpoints.web.exposure.include=*
  • endpoints..enabled修改为management.endpoint..enabled

chart修改

  • 修改deployment.yamlreadinessProbe探针,localhost:{{ .Values.deployment.managementPort }}/health => localhost:{{ .Values.deployment.managementPort }}/actuator/health
  • 修改values.yaml中的metrics.path /prometheus=>/actuator/prometheus

导入包

  • org.springframework.cloud.netflix.feign => org.springframework.cloud.openfeign
  • org.springframework.boot.bind不再可用,并被新的宽松绑定规则所取代, RelaxedDataBinderBinder取代

你可能感兴趣的:(Choerodon Spring Boot 1.5.x迁移2.0.x指南)