spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程

本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍。

  我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的:

  1、首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <exclusions>
  <exclusion>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
  </exclusion>
 </exclusions>
</dependency>

  2、加入Jetty容器

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

  这样我们的springboot容器就修改成Jetty容器了。

  为了方便我们的调试,这里给大家推荐一款http调试工具:Postman

  下面我们聊一下springboot的全局配置文件:application.properties

  在开发中一定遇到过这样的需求,就是修改我们的容器访问端口,既然springboot默认加载容器,那么端口设置当然是通过配置文件来控制的,相当方便我们只需要在配置文件中添加:

server.port=6666

  这样我们的容器端口就修改为6666了。

  我们还可以通过配置文件来设置项目访问别名:

server.context-path=/springboot

  这样我们启动项目通过http://localhost:6666/springboot1即可访问到我们的项目

  以上只是springboot配置文件配置的冰山一角,比如我们还可以设置数据库连接配置(database),设置开发环境配置,部署环境配置,实现两者之间的无缝切换。

  下面我们一起了解一下关于springboot的controller的使用,springboot为我们提供了三个注解:

  上一篇我们使用的便是@RestController,下面我们来一起使用@Controller试试:

@Controller
//@ResponseBody
public class RequestTest {
 /**
  * 不对请求方式限制
  * @return
  */
 @RequestMapping(value = "/req")
 public String req(){
  return "success";
 }
}

  当我们在浏览器输入http://localhost:8080/springboot1/req回车,发现404

{
 "timestamp": 1515332935215,
 "status": 404,
 "error": "Not Found",
 "message": "No message available",
 "path": "/springboot1/req"
}

  这是为什么呢?这是因为@Controller必须配合模板使用,所以我们这里打开maven的pom文件,添加spingboot的模板:

<!-- springboot模板 -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

  然后在我们项目的resources目录下找到templates(如过没有,新建一个,但一定要注意文件夹名称必须保持一致),然后创建一个success.html这样我们再次启动项目,访问刚刚的地址,是不是就Ok了。

  不过这里需要说明一点,现在的企业级开发都是前后端分离,我们做后台服务只需要返回对应的数据即可,当然使用模板还有一个弊端,那就是性能会造成一定的损耗,所以这里大家简单了解即可。

  上面的介绍中已经说了,@Controller+@ResponseBody相当于@RestController,所以这里推荐大家使用@RestController。

  下面我们来介绍介绍一下@RequestMapping(value = "/req"),这个注解相信大家已经知道他的用法了,当然这个注解不但可以使用在方法上,同样适用于类。

@RestController
//@Controller
//@ResponseBody
@RequestMapping(value = "/test")
public class RequestTest {
 /**
  * 不对请求方式限制
  * @return
  */
 @RequestMapping(value = "/req")
 public String req(){
  return "success";
 }
 /**
  * 限制请求方式为GET
  * @return
  */
 @RequestMapping(value = "/req1", method = RequestMethod.GET)
 public String req1(){
  return "success";
 }
 /**
  * 限制请求方式为POST
  * @return
  */
 @RequestMapping(value = "/req2", method = RequestMethod.POST)
 public String req2(){
  return "success";
 }
}

  对于method相信看到这里你一定已经知道他的用处了,是的指定访问类型,没有设置默认任何方式都可以访问。不知道小伙伴是否想到如果在类的@RequestMapping设置过method那么类中的方法默认继承,当然也可以在方法处单独设定,优先级的问题,小伙伴自己尝试一下吧。

  下面我将给大家介绍一下如何在Controller中的访问配置文件中的常量。首先我们在配置文件中添加:

name=hpugs
age=35
content=name:${name};age:${age}

  我们在配置文件中使用常量,通过${}来使用。

  下面我们在Controller中将参数注入:

 //注入配置文件中的参数
 @Value("${name}")
 private String name;
 @Value("${age}")
 private Integer age;
 @Value("${content}")
 private String content;
 @RequestMapping(value = "/req3", method = RequestMethod.GET)
 public String req3(){
  return "name=" + name;
 }
 @RequestMapping(value = "/req4", method = RequestMethod.GET)
 public String req4(){
  return "age=" + age;
 }
 @RequestMapping(value = "/req5", method = RequestMethod.GET)
 public String req5(){
  return "content=" + content;
 }

  启动我们的项目访问一下试试。

  这样的使用如果你感觉还不过瘾,这里再教大家一招:我们通过类映射配置文件,借助类来进行参数使用,相对单个参数注入要方便一些,首先创建一个Java类

@Component
@ConfigurationProperties(prefix = "userInfo")
public class UserInfo {
 private String names;
 private Integer age;
 private String content;
 public Integer getAge() {
  return age;
 }
 public String getNames() {
  return names;
 }
 public void setNames(String names) {
  this.names = names;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public String getContent() {
  return content;
 }
 public void setContent(String content) {
  this.content = content;
 }
}

  然后在我们的配置文件中设置参数:

userInfo.names=小破孩
userInfo.age=25
userInfo.content=name:${userInfo.names};age:${userInfo.age}

  接线来使我们的Controller:

 //注入对象
 @Autowired
 private UserInfo userInfo;

 @RequestMapping(value = "/req6", method = RequestMethod.GET, produces="text/plain;charset=UTF-8")
 public String req6(){
  return "name=" + userInfo.getNames();
 }
 @RequestMapping(value = "/req7", method = RequestMethod.GET)
 public String req7(){
  return "age=" + userInfo.getAge();
 }
 @RequestMapping(value = "/req8", method = RequestMethod.GET)
 public String req8(){
  return "content=" + userInfo.getContent();
 }

  好了重启我们的项目访问试试看。

  小伙伴们不知道遇到这个问题没?出现了中文乱码,首先大家先不要着急,我们先看另外一种springboot的配置文件:application.yml。这个配置文件通过换行空格来替换“;”,我们看一下同样的配置在yml下面如何配置:

server:
 port: 8888
 context-path: /springboot1
name: hpugs
age: 35
content: name:${name};age:${age}
userInfo:
 names: 小破孩
 age: 25
 content: name:${userInfo.names};age:${userInfo.age}

  现在我们启动项目运行试一试。

  回到上面的乱码问题,当我们使用yml时是不是没有出现乱码,小伙伴是不是有点郁闷了,这是为什么呢?这是因为.properties文件使用的是unicode的编码形式,所以当我们输入中文时会出现乱码。当然引乱码的还有一种原因那就是我能的编码设置和前端不一致,这个我们通过在配置文件中添加:

spring:
 http:
  encoding:
   force: true
   charset: UTF-8
  enabled: true
server:
 tomcat:
 uri-encoding: UTF-8

  来进行控制。这里再给大家介绍一下开发小技巧,springboot为我们提供了在不同开发环境下的不同配置文件解决方法:

#yml格式
spring:
 profiles:
  active: prod
#.properties格式
spring.profiles.active=dev

总结

以上所述是小编给大家介绍的spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • spring-boot整合dubbo:Spring-boot-dubbo-starter
  • 详解spring boot starter redis配置文件
  • 深入浅析 Spring Boot Starter
  • spring boot 自定义starter的实现教程
(0)

相关推荐

  • 详解spring boot starter redis配置文件

    spring-boot-starter-Redis主要是通过配置RedisConnectionFactory中的相关参数去实现连接redis service. RedisConnectionFactory是一个接口,有如下4个具体的实现类,我们通常使用的是JedisConnectionFactory. 在spring boot的配置文件中redis的基本配置如下: # Redis服务器地址 spring.redis.host=192.168.0.58 # Redis服务器连接端口 spring.

  • 深入浅析 Spring Boot Starter

    Spring Boot 简介 Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西.因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置.Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置.如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置.另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功,让我们快速构建企业及应用程序. 依赖管理是任何复杂项目的关键部

  • spring boot 自定义starter的实现教程

    spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢? 这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的. 一. 建 starter 项目 自定义的starter, 项目命名规范是: 自定义名-spring-boot-starter 先来看一下, 我最后的目录结构 1. 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

  • spring-boot整合dubbo:Spring-boot-dubbo-starter

    为什么要写这个小工具 如果你用过Spring-boot来提供dubbo服务,相信使用中有很多"不爽"的地方.既然使用spring boot,那么能用注解的地方绝不用xml配置,这才是spring-boot-style.开个玩笑,真正意思是,spring-boot适合一些简单的.独立的服务,一个大的系统是不适合使用spring-boot来开发.相反,spring-boot适合那些简单服务的搭建. 网上大多数的方法还是使用xml配置,通过@Import注解来引入xml配置. 怎么使用 对于

  • spring boot开发遇到坑之spring-boot-starter-web配置文件使用教程

    本篇我将继续向小伙伴介绍springboot配置文件的配置,已经全局配置参数如何使用,好了下面开始我们今天的内容介绍. 我们知道Spring Boot支持容器的自动配置,默认是Tomcat,当然我们也是可以进行修改的: 1.首先我们排除spring-boot-starter-web依赖中的Tomcat:在pom文件中排除tomcat的starter <dependency> <groupId>org.springframework.boot</groupId> <

  • 详解使用Spring Boot开发Restful程序

    一.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 多年以来,Spring IO平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理.在去年的SpringOne 2GX会议上,Pivotal的CTO Adria

  • Spring Boot开发Web应用详解

    Spring Boot快速入门中我们完成了一个简单的RESTful Service,体验了快速开发的特性.在留言中也有朋友提到如何把处理结果渲染到页面上.那么本篇就在上篇基础上介绍一下如何进行Web应用的开发. 静态资源访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static /public /resources /META-INF/resources

  • macOS下Spring Boot开发环境搭建教程

    macOS搭建Spring Boot开发环境,具体内容如下 软硬件环境 macOS Sierra java 1.8.0_65 maven 3.5.0 idea 2017.1.5 前言 最近接触了一点java web相关的知识,了解一下最近比较火的开发框架Spring Boot,站在一个从未涉足过java web和spring的开发者角度来讲,spring boot确实是一个非常不错的框架,配置简单,容易入门,对于想入行java web的童鞋,是一个很好的切入点. maven安装 这里选择mave

  • 浅谈Spring Boot 开发REST接口最佳实践

    本文介绍了Spring Boot 开发REST接口最佳实践,分享给大家,具体如下: HTTP动词与SQL命令对应 GET 从服务器获取资源,可一个或者多个,对应SQL命令中的SELECT GET /users 获取服务器上的所有的用户信息 GET /users/ID 获取指定ID的用户信息 POST 在服务器上创建一个新资源,对应SQL命令中的CREATE POST /users 创建一个新的用户 PUT 在服务器上更新一个资源,客户端提供改变后的完整资源,对应SQL命令中的UPDATE PUT

  • spring boot 开发soap webservice的实现代码

    介绍 spring boot web模块提供了RestController实现restful,第一次看到这个名字的时候以为还有SoapController,很可惜没有,对于soap webservice提供了另外一个模块spring-boot-starter-web-services支持.本文介绍如何在spring boot中开发soap webservice接口,以及接口如何同时支持soap和restful两种协议. soap webservice Web service是一个平台独立的,低耦

  • Spring Boot 开发环境热部署详细教程

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况,同样也同样需要经历重新编译.重新启动程序的过程. 只不过 Spring Boot 提供了一个spring-boot-devtools的模块,使得 Spring Boot应用支持热部署,无需手动重启Spring Boot应用,,提高开发者的开发效率.接下来,聊一聊Spring Boot 开发环境热部署

  • 使用spring boot开发时java对象和Json对象转换的问题

    将java对象转换为json对象,市面上有很多第三方jar包,如下: jackson(最常用) <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind&l

  • Spring Boot开发RESTful接口与http协议状态表述

    目录 一.RESTful风格API的好处 二.RESTfulAPI的设计风格 2.1.RESTful是面向资源的(名词) 2.2.用HTTP方法体现对资源的操作(动词) 2.3.HTTP状态码 2.4.Get方法和查询参数不应该改变数据 2.5.使用复数名词 2.6.复杂资源关系的表达 2.7.高级用法:HATEOAS 2.8.资源过滤.排序.选择和分页的表述 2.9.版本化你的API 参考: 一.RESTful风格API的好处 API(Application Programming Inter

  • Spring Boot 开发私有即时通信系统(WebSocket)

    1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 1.5.3,使用MongoDB存储数据(非必须),Maven依赖如下: <properties> <java.version>1.8</java.version> <thymeleaf.version>3.0.0.RELEASE</thymeleaf.ve

随机推荐