08
2019
05

springboot 1.0升级2.0遇到的一些坑

*我升级的是从1.5.1升级到2.1.4

*springboot升级很多是因为jar包冲突,高版本被忽略


结合网上搜到的。。。开始:

1:首先SpringBootApplication 启动类需要重新导包


2:application.yaml 配置文件问题,properties的配置文件一样

很多配置移到了 spring下,有的多了一级 servlet

jdbc 的url和driver变成jdbc-url,driver-class-name,不过没改貌似也没错

jpa改到spring下,naming下的策略配置有implicit-strategy和physical-strategy

implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl

physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy #遇到大写改下划线加小写
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl #不做修改

上传和请求大小:

servlet:
  multipart:
    max-file-size: 51200MB
    max-request-size: 512000MB
#更多完整配置 可以看这--》 SpringBoot 2.x 配置大全 https://www.jianshu.com/p/8629f66ab67b


3:jpa Repository方法的修改

findOne() -> getOne()

delete() -> deleteById(),这个会有懒加载问题,改为 findById().get()

如果遇到 json serialization问题,json空值序列号问题,可配置:

spring:
jackson:
 serialization:
   fail-on-empty-beans: false


4:WebConfig类修改

原本继承WebMvcConfigurerAdapter过时了,改 实现 WebMvcConfigurer

如果本类继承了WebMvcConfigurationSupport,那么springboot有些默认配置就不生效了,其它实现WebMvcConfigurer的类也不生效


5:静态资源被拦截器拦截(WebConfig类中)

原本静态资源默认 /static 下放行,现在需要处理,网上搜到的都是添加addResourceHandlers,,如果你的静态资源请求有统一的前缀,那在自定义拦截器过滤excludePathPatterns

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}


6:Pageable相关问题(WebConfig类中)

pageable没有定义相关构造方法,添加参数分解器

No primary or default constructor found for interface org.springframework.data.domain.Pageable
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    argumentResolvers.add( new PageableHandlerMethodArgumentResolver());
}

PageRequest 增加新方法, PageRequest of() 


7:yaml的属性配置类@ConfigurationProperties

前缀只能含有横杠 -


8:freemarker配置类

如果需要配置configuration的共享值,可以直接依赖 freemarker.template.Configuration ,注入一个configuration,然后用 @PostConstruct 启动后设置 setSharedVariable


9:configureMessageConverters 转换没有生效,fastjson替换默认的jackson

在最后一步add添加的时候加上index,如:converters.add(0,fastConverter);




拦截器中@value无效果

这个不属于这次升级,拦截器需要@Component,然后在注册拦截器那依赖,用依赖的引用注册,不要用new。




« 上一篇

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。