SpringBoot1.x和SpringBoot2.x版本差異化還是比較大的,有些三方依賴組件有些是基於2.0版本爲標準升級的,當我們將項目由1.0升級到2.0時會出現依賴的方法不存在或方法錯誤,需要逐個去調整,下面總結了我們升級實踐過程中遇到的一些問題和網友總結的一些問題。
Data 模塊也做了許多更新和提升
1) 2.x 默認使用 HikariCP 連接池;
2) 更加合理化的優化了數據庫初始化邏輯;
3) spring.jdbc.template 自動配置現在可以通過 spring.jdbc.template 屬性定製;
4) 提供了新配置 spring.jdbc.template 方便分頁和排序;
5) 對數據庫 spring.jdbc.template 自動化配置支持;
6) 可以高級定製 MongoDB 客戶端;
7) 可以通過 spring.cache.redis.* 來配置 Redis 緩存默認值。
靜態資源文件處理
切記,springboot2的靜態資源必須手動設置路徑映射纔可以訪問。
1.在 resources下面手動新建文件夾,樓主新建的文件夾名稱爲 static,當然也可以叫其他名字,比如 demo。然後把所有的靜態資源文件放到 static 或者 demo 下。
2.java 代碼配置,切記,在Spring Boot 1.5版本都是靠重寫WebMvcConfigurerAdapter的方法來添加自定義攔截器,消息轉換器等。SpringBoot 2.0 後,該類被標記爲@Deprecated。因此我們只能靠實現WebMvcConfigurer接口來實現。
/** * SpringBoot中訪問doc.html報404的解決辦法 * @author james */ @Configuration public class WebMvcConfiguration implements WebMvcConfigurer { /** * 資源處理器 * * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("swagger-ui.html", "doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
Actuator加強
在 2.x 中,對執行器端點進行了許多改進,所有的 HTTP 執行端點現在都暴露在 /actuator路徑下,並對 JSON 結果集也做了改善
Redis異常
Error:(28, 33) java: 對於RedisCacheManager(org.springframework.data.redis.core.RedisTemplate), 找不到合適的構造器
解決SpringBoot2.0中:
@Bean public CacheManager cacheManager(RedisConnectionFactory factory) { RedisCacheManager rcm = RedisCacheManager.builder(factory).build(); return rcm; }
SpringBoot2中訪問doc.html報404的解決辦法
添加WebMvcConfiguration文件
@Configuration public class WebMvcConfiguration implements WebMvcConfigurer { /** * 資源處理器 * * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("swagger-ui.html", "doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); }