开发环境配置及Controller的使用
介绍、特点
-
Spring Boot是由Pivotal团队提供的基于Spring的全新框架,旨在简化Spring应用的初始搭建和开发过程。 -
Spring Boot是所有基于Spring开发项目的起点。 -
Spring Boot就是尽可能地简化应用开发的门槛,让应用开发、测试、部署变得 更加简单。 -
遵循 “约定优于配置” 的原则。
-
spring-boot-starter-web启动器主要包括web、webmvc、json、tomcat等 基础依赖组件,作用是提供Web开发场景所需的所有底层依赖。webmvc为Web开发的基础框架,JSON数据解析组件,tomcat为自带的容器依赖。
开发环境热部署
在开发中不可避免的需要频繁修改类文件,借助spring-boot-devtools可以使得无需手动重启应用即可重新编译,启动项目。
devtools会监听classpath下的文件变动,触发Restart类加载器重新加载该类,达到热部署的目的。特别的: 并不是所有的更改都需要重启应用(如静态资源、视图模板),可以通过设置
spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应用。添加以下依赖以使用(
gradle):
1implementation 'org.springframework.boot:spring-boot-devtools:4.0.1'在
application.properties中添加
1 2spring.devtools.restart.enabled=true spring.devtools.restart.additional-paths=src/main/java
IDEA中需要修改构建、执行、部署->编译器->自动构建项目和高级设置->即使开发的应用程序当前正在运行,也允许自动make启动为True。
MVC设计模式
MVC 是 Model(模型)、View(视图)、Controller(控制器)的缩写,它把应用程序拆分成三个独立但协作的部分,用 “餐厅” 来形象理解:
- Model(模型):后厨(处理核心数据和业务逻辑,比如食材存储、菜品制作规则,不关心谁来点餐、怎么上菜)。
- View(视图):餐厅的菜单 / 餐桌(只负责展示内容,比如把菜品信息展示给顾客,不处理点餐逻辑,也不制作菜品)。
- Controller(控制器):服务员(接收顾客的点餐请求,告诉后厨做什么菜,做好后再告诉前台怎么端给顾客,自己不做菜也不展示菜单)。

Controller
Spring Boot提供了@Controller和@RestController两种注解来标识此类负责
接收和处理HTTP请求。
如果请求的是页面和数据,使用
@Controller注解即可;如果只是请求数据,则可以使用@RestController注解。特别的: 在前后端分离的项目中,
@RestController使用的更加广泛。
示例
以下是一个Controller的示例代码:
|
|
访问http://域名/hello即可查看。
默认情况下,如果返回的是一个对象,那么会自动的转为
JSON。
路由映射
@RequestMapping注解主要负责URL的路由映射。它可以添加在Controller类或者具体的方法上。如果添加在Controller类上,则这个Controller中的所有路由映射都将会加上此映射规则,如果添加在方法上,则只对当前方法生效。
@RequestMapping注解包含很多属性参数来定义HTTP的请求映射规则。常用的属性参数如下:
value:请求URL的路径,支持URL模板、正则表达式。
method:HTTP请求方法。
consumes:请求的媒体类型(Content-Type),如application/json。
produces:响应的媒体类型。
params,headers:请求的参数及请求头的值。
@RequestMapping也支持通配符*、?、**:
*匹配任意字符,**匹配任意路径,?匹配单个字符。无通配符的匹配顺序高于有通配符的,
*高于**。
参数的传递
@RequestParam:将请求参数绑定到控制器的方法参数上,接收的参数来自
HTTP请求体或请求url的QueryString,当请求的参数名称与Controller的业务
方法参数名称一致时,@RequestParam可以省略。
@PathVaraible:用来处理动态的URL,URL的值可以作为控制器中处理方法
的参数。
@RequestBody:接收的参数是来自requestBody中,即请求体。一般用于处理
非Content-Type:application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
QueryString类似于如下形式:
1http://localhost:8080/hello?nickname=zhangsan&phone=123即有一个标志
?来传递,具体的用法参照下面的示例。
示例
访问http://localhost:8080/hello?nickname=zhangsan&phone=123:
|
|
-
其中
value是默认的,只有一个时可以略去不写。 -
形参列表中的
nickname、phone与QueryString中的参数名匹配的时候,会自动匹配,如果参数名不匹配的时候,参考如下写法:
|
|
- 其中
@RequestParam注解存在时,该参数默认视为必须的,改变需要额外写required = false。 - 当传递的参数太多时,应当封装为对象,但注意变量名的对应。
- 非
Content-Type:application/x-www-form-urlencoded的数据对象一般需要在参数前面加上@RequestBody注解,比如处理json的时。
TIP:
@RequestMapping(value = "/getData",method = RequestMethod.GET)注解等价于@GetMapping("/hello")。