基于上一篇中我们已经搭建好的Spring Boot脚手架,如何去配置一个WEB应用程序。
现在很简单,只需pom加入web-starter的相关依赖,即可自动拉取到SpringMvc所需要的所有依赖包。POM依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
POM文件增加依赖后,mvean会自动下载web应用所需要的所有依赖包。入上图的红框里面所示。在IDEA的右侧mvean pojects菜单里面可以看得见。具体位置见下图
重点说明,定义了父框架的版本后,所有starter的依赖无需要定义版本,spring boot会自动去找到框架所对应的版本。
根据mvean-project里的包结构,可以看得出来springboot2.2.5版本默认引入的tomcat9的版本。Tomcat9解决了websocket客户端异常中断时候服务端报堆栈错误而且应用代码无法扑获异常的问题。当然也可以通过pom文件排除掉tomcat或者该版本的tomcat,换成其他的java解释容器。下面代码是POM中排除tomcat依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</dependency>
需要排除自动引入的那个依赖,在右边mvean project中找到后,然后对应写 <exclusion>
标签里面对应依赖的位置。
可以看出来默认还引入了jackson的依赖,当然也可以替换成gson或者其他json工具。
另外就是最核心的springMVC报,引入的是5.2.0的版本,如下图
但是里面并没有引用模本引擎,因此要使用web模本引擎,可以单独引用Thymeleaf的starter。
引用代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
当然,如果这个服务仅仅是作为业务服务端提供rest风格的接口, 则只需引入web依赖使用就可以了。
Web的简单使用,先不做任何的权限设置。保证任何接口都可以被任意访问
简单配置如下:
//括号里面指排除实例化DataSourceAutoConfiguration.class类。如果我此时引用了其他的包,但是我又没有进行相关属性配置,暂时不需要使用,那可以用exclude来排除掉所依赖了的注解了@configruation了的配置类。
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@CrossOrigin//这个注解用于全局跨域,可以让所有前端JS程序的ajax请求可以直接访问
public class KurentoApplication {
public static void main(String[] args) {
SpringApplication.run(KurentoApplication.class, args);
}
}
以下是简单的rest风格接口的配置。
这里@RestController的注解就相当于
@Controller
@ResponseBody
两个注解的组合。所有的接口将直接返回json的数组。
@RestController
public class Controller {
//这个注解表示,响应1个get请求,这个请求的路径是/test,并返回一个String,这个String我们一般是组合为json格式返回给请求的客户端
@GetMapping(value = "test")
public String test ()
{
return ”hello rest”;
}
如果是@controller注解
@GetMapping(value = "test")
public String test ()
{
return ”hello”;
}
方法将自动匹配静态资源文件夹里面的hello.html、hello.htm文件。至于后缀到底匹配什么也可以进行配置。
同时拦截方法还会在session中返回一个ModelView对象,用于对web页面的渲染,但这个web页面渲染是在服务端进行的。