springboot1.x升2.x的注意事项

编程

记录升级过程中的一些错误。

本次升级为1.5.x 升级为2.1.4

----------------------------------------------

如果java版本低于8请不要升级,spring boot 2.0需要至少java 8才行。

----------------------------------------------

一:WebMvcConfigurerAdapter 已废弃

@Configuration

public class WebConfig extends WebMvcConfigurerAdapter {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**").allowedMethods("GET", "POST", "PATCH", "DELETE");

}

@Bean

public Filter characterEncodingFilter() {

CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();

characterEncodingFilter.setEncoding("UTF-8");

characterEncodingFilter.setForceEncoding(true);

return characterEncodingFilter;

}

@Override

public void addInterceptors(InterceptorRegistry registry) {

//增加手机端拦截器

registry.addInterceptor(new UserRoleInterceptor()).addPathPatterns("/app/**");

super.addInterceptors(registry);

}

/**

* @Title: multipartConfigElement

* @Description: 控制图片上传大小

* @return

*/

@Bean

public MultipartConfigElement multipartConfigElement() {

MultipartConfigFactory factory = new MultipartConfigFactory();

factory.setMaxFileSize(1024L * 1024L * 8);

return factory.createMultipartConfig();

}

}

2.0需要继承WebMvcConfigurer接口

@Configuration

public class WebConfig implements WebMvcConfigurer {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**").allowedMethods("GET", "POST", "PATCH", "DELETE");

}

@Bean

public Filter characterEncodingFilter() {

CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();

characterEncodingFilter.setEncoding("UTF-8");

characterEncodingFilter.setForceEncoding(true);

return characterEncodingFilter;

}

@Override

public void addInterceptors(InterceptorRegistry registry) {

//增加手机端拦截器

registry.addInterceptor(new UserRoleInterceptor()).addPathPatterns("/mobile/**");

}

/**

* @Title: multipartConfigElement

* @Description: 控制图片上传大小

* @return

*/

@Bean

public MultipartConfigElement multipartConfigElement() {

MultipartConfigFactory factory = new MultipartConfigFactory();

factory.setMaxFileSize(DataSize.ofBytes(1024L * 1024L * 8));

return factory.createMultipartConfig();

}

}

 

二:时间戳的变化

springboot1.x时,请求返回默认将Date类型转换成时间戳,springboot2.0后,默认返回的时间格式变成了UTC字符串:

spring:

jackson:

time-zone: GMT+8

serialization:

write-dates-as-timestamps: true

 

三:redis的变化

    1.x默认使用jedis, 2.0以上版本使用了lettuce。

  另外redis依赖名称增加了一个data: spring-boot-starter-data-redis

spring:

redis:

host: xxx.xxx.xxx.xxx

database: 0

port: 6379

password: xxxxx

lettuce:

pool:

max-idle: 8

min-idle: 2

max-active: 50

# 连接超时时间 单位 ms(毫秒)

max-wait: 8000ms

 

四:spring cloud依赖的坑

spring cloud版本太多,哪些支持上面版本这里不再表述。我使用了比较新的:Greenwich.SR3,这个版本主要是设计一些依赖名称的变化,

如下图,注意提示,直接找变化后的就版本就行

 

汇总:

<!--spring-cloud-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

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

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

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

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

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

</dependency>

另外:Fegin还有一个坑需要配置allow-bean-definition-overriding来解决:

spring:

main:

allow-bean-definition-overriding: true

   

五:配置文件缩紧

    yml配置很多情况不能使用驼峰的写法,启动时会提示请使用: "-"分割字母,所有字母全小写即可,这个是在升级druid时发现的,因为之前写了很多自定义配置。

 

六:其他组件的更新

    由于使用了spring 5.x 所以其他依赖低版本spring第三方包要注意了,如果不是直接使用的spring boot相关的包,需要同步升级。

    如:

<artifactId>thymeleaf-spring4</artifactId>

需要升级为:

<!--这只是举个例子,最好的方式是引入spring boot相关的thymeleaf, 避免这种情况-->

<artifactId>thymeleaf-spring5</artifactId>

Spring Boot 2.0在组件支持方面做了更新,然后支持的组件如下:

  • ​Tomcat升级至8.5
  • Flyway升级至5
  • Hibernate升级至5.2
  • Thymeleaf升级至3
     

七:jackson冲突问题:

    会报ObjectMapper找不到。

<!--请务必排除jackson-annotations,避免包冲突-->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<exclusions>

<exclusion>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-annotations</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-annotations</artifactId>

</dependency>

    

 

    

 

以上是 springboot1.x升2.x的注意事项 的全部内容, 来源链接: utcz.com/z/510908.html

回到顶部