springboot1.x升2.x的注意事项
记录升级过程中的一些错误。
本次升级为1.5.x 升级为2.1.4
----------------------------------------------
如果java版本低于8请不要升级,spring boot 2.0需要至少java 8才行。
----------------------------------------------
一:WebMvcConfigurerAdapter 已废弃
@Configurationpublic 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接口
@Configurationpublic 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