*我升级的是从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。