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的必经之路,你们一块儿加油吧!

相关文章
相关标签/搜索