spring-boot版本問題讓開發懷疑人生

1、問題產生

當咱們將一個框架從舊版本升級到新版本以後,各類兼容各類坑可能會接踵而至,這一般是你意向不到的,由於新版本可能移除了舊版本的某些配置項,也可能更改了舊版本的配置項等。java

這不,今天小編就遇到了這麼一個坑,這個坑是因爲我把spring-boot版本升級以後更改帶來的,這讓我一度懷疑是我某個地方配置錯了什麼的。下面咱們一塊兒看看這個坑是什麼?nginx

當咱們在開發spring-boot應用程序時,每每須要對系統的某些屬性進行配置,好比說你像讓這個系統在7000端口啓動,那麼你只需在appication.properties文件中增長下面的配置項便可:git

server.port=7000github

又或者你想限制上傳文件的大小時,你能夠進行如下配置:web

spring.http.multipart.max-file-size=10Mspring

問題來了,小編將spring版本從1.5.7升級到2.0.0時發現server.context-path配置項不生效,下面貼出小編的配置:json

application.properties後端

server.port=7001
server.context-path=/hello
複製代碼

JsonBackController.java瀏覽器

package com.example.jsonpDemo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.jsonpDemo.pojo.User;

/**
 * 
 * The class JsonBackController.
 *
 * Description:該控制器返回一串簡單的json數據,json數據由一個簡單的User對象組成
 *
 * @author: huangjiawei
 * @since: 2018年6月12日
 * @version: $Revision$ $Date$ $LastChangedBy$
 *
 */
@RestController
@RequestMapping(value = "/map")
public class JsonBackController {
    @RequestMapping(value = "getUser.json")
    public User getUser() {
    	return new User("huangjiawei", 22);
    }
}
複製代碼

上面的配置正常來講啓動應用程序以後,你在瀏覽器輸入http:localhost:7001/hello/map/getUser.json後應該能夠執行到getUser()方法,但在spring-boot 2.0.0版本卻報出404錯誤,因爲小編同時將該應用程序部署到阿里雲服務器並採用nginx作相應的轉發,這一度讓我懷疑是否是我在nginx上配置出錯了,結果採用nginx -t以後發現沒語法錯誤,其餘應用也能夠正常訪問。bash

後來懷疑這懷疑那,差點沒懷疑到人生,最後發現是版本問題致使的,2.0.0版本以前server.context-path配置是有效的,但在2.0.0後改成server.servlet.context-path,爲了貼出相關證據,我搜了spring-boot的遠在github上的老家,下面貼出它家的寶貝:github.com/spring-proj…

總結

此次花了我些時間在排查上,我想這也是因爲我經驗不足致使的,因此,小編認爲,之後若是遇到相關開發問題時,應該學會去抄框架的家底,畢竟寶貝都在那!看看新版本都有哪些更新,再考慮換個版本看看。但若是你的應用程序已經在生產上運行,版本切換要考慮影響程度,不要影響其餘業務功能。

spring-boot內容仍是挺多的,這個框架也是當先後端微服務比較火的,也是通往spring-cloud的必經之路,你們一塊兒加油吧!

相關文章
相關標籤/搜索