SpringBoot1.x和SpringBoot2.x版本差異化還是比較大的,有些三方依賴組件有些是基于2.0版本為標準升級的,當我們將項目由1.0升級到2.0時會出現(xiàn)依賴的方法不存在或方法錯誤,需要逐個去調(diào)整,下面總結了我們升級實踐過程中遇到的一些問題和網(wǎng)友總結的一些問題。
Data?模塊也做了許多更新和提升
1) 2.x 默認使用?HikariCP?連接池;
2) 更加合理化的優(yōu)化了數(shù)據(jù)庫初始化邏輯;
3)?spring.jdbc.template?自動配置現(xiàn)在可以通過?spring.jdbc.template?屬性定制;
4) 提供了新配置?spring.jdbc.template?方便分頁和排序;
5) 對數(shù)據(jù)庫?spring.jdbc.template?自動化配置支持;
6) 可以高級定制?MongoDB?客戶端;
7) 可以通過?spring.cache.redis.*?來配置?Redis?緩存默認值。
靜態(tài)資源文件處理
切記,springboot2的靜態(tài)資源必須手動設置路徑映射才可以訪問。
1.在 resources下面手動新建文件夾,樓主新建的文件夾名稱為 static,當然也可以叫其他名字,比如 demo。然后把所有的靜態(tài)資源文件放到 static 或者 demo 下。
2.java 代碼配置,切記,在Spring Boot 1.5版本都是靠重寫WebMvcConfigurerAdapter的方法來添加自定義攔截器,消息轉(zhuǎn)換器等。SpringBoot 2.0 后,該類被標記為@Deprecated。因此我們只能靠實現(xiàn)WebMvcConfigurer接口來實現(xiàn)。
/** * SpringBoot中訪問doc.html報404的解決辦法
* @author james
*/@ConfigurationpublicclassWebMvcConfigurationimplements WebMvcConfigurer {
? ? /**? ? * 資源處理器
? ? *
? ? * @param registry
? ? */? ? @Override
? ? publicvoid 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 中,對執(zhí)行器端點進行了許多改進,所有的 HTTP 執(zhí)行端點現(xiàn)在都暴露在?/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文件
@ConfigurationpublicclassWebMvcConfigurationimplements WebMvcConfigurer {
? ? /**? ? * 資源處理器
? ? *
? ? * @param registry
? ? */? ? @Override
? ? publicvoid 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/");
? ? }