文章目录
- 一、一个简单的Spring Boot项目
- 1.在pom.xml中加入JSP和JSTL的依赖包
- 2.修改application.properties文件
- 3.新建一个控制器IndexController
- 4.新建一个jsp文件
- 5.Spring Boot运行文件
- 二、Spring Boot的依赖和自动配置
- 1.为什么能在很少的配置下运行Spring MVC?
- 2.使用自定义配置
- 修改端口
- 3.Spring boot配置文件加载优先级顺序:
- 三、参考资料
一、一个简单的Spring Boot项目
Spring MVC的视图解析器的作用主要是定位视图,也就是当控制器只是返回一个逻辑名称的时候,是没有办法直接对应找到视图的,这就需要视图解析器进行解析了。
1.在pom.xml中加入JSP和JSTL的依赖包
<dependencies>
<!-- Spring Boot Starter依赖引入 -->
<!-- AOP包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- Web开发包,将载入Spring MVC所需要的包,且内嵌tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--加载测试依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- 引入插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Maven的配置文件中引入了多个Spring Boot的starter,Spring Boot会根据Maven配置的starter去寻找对应的依赖,将对应的jar包加载到工程中,而且它还会把绑定的服务器也加载到工程中,这些都不需要你再进行处理。
2.修改application.properties文件
为了配置视图解析器(ViewResolver)
server.port=8090
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
这里的spring.mvc.view.prefix和spring.mvc.view.suffix是Spring Boot与我们约定的视图前缀和后缀配置,意思是找到文件夹/WEB-INF/jsp/下以.jsp为后缀的JSP文件,那么前缀和后缀之间显然又缺了一个文件名称,在Spring MVC机制中,这个名称则是由控制器(Controller)给出的,所以我们得创建一个控制器
3.新建一个控制器IndexController
package com.springboot.chapter2.main;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/index")
public String index() {
return "index";
}
}
此处定义了一个映射为/index的路径,然后方法返回了"index",这样它就与之前配置的前缀和后缀结合起来找对应的jsp为念,为此我们还需要开发一个对应的jsp文件
4.新建一个jsp文件
%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring boot 视图解析器</title>
</head>
<body>
<h1>测试视图解析器</h1>
</body>
</html>
这样我们就完成了一个简单的控制器,并且让视图解析器找到视图的功能。从上面来看定义视图解析器,在Spring Boot中只需要通过配置文件定义视图解析器的前后缀即可,而无须任何代码,这是因为Spring Boot给了我们自定义配置项,它会读入这些自定义的配置项,为我们生成Spring MVC中的视图解析器。
5.Spring Boot运行文件
package com.springboot.chapter2.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class Chapter2Application {
public static void main(String[] args) {
SpringApplication.run(Chapter2Application.class, args);
}
}
@SpringBootApplication注解标志着这是一个Spring Boot入门文件。加粗的代码则是以Chapter2Application类作为配置类来运行Spring Boot项目,于是Spring Boot就会根据你在Maven加载的依赖来完成运行了。
二、Spring Boot的依赖和自动配置
1.为什么能在很少的配置下运行Spring MVC?
- 加入spring-boot-starter-web后,会通过Mavem将对应的资源加载到我们的工程中,这样会行程依赖
- spring-boot-autoconfigure中的DispatherServletAutoConfiguration对DisparcherServlet进行自动配置
2.使用自定义配置
上面所述表明,SpringBoot启动Sprig MVC项目都是通过Maven依赖找到对应的jar包和嵌入的服务器,然后使用默认自动配置类来创建默认的开发环境。
但是有些时候,我们需要对这些默认环境进行修改以适应个性化的要求。
在使用开发工具构造Spring boot项目时,会自动创建一个application.properties
文件,他不是默认的配置文件,通过它可以根据自己的需求实现自定义。
修改端口
server.port=8090
3.Spring boot配置文件加载优先级顺序:
命令行参数;
来自java:comp/env的JNDI属性;
Java系统属性(System.getProperties());
操作系统环境变量;
RandomValuePropertySource配置的random.*属性值;
jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件;jar包内部的application-{profile}.properties或application.ym(带spring.profile)配置文件;jar包外部的application.properties或application.yml(不带spring.profile)配置文件;
jar包内部的application.properties或application.ym(不带spring.profile)配置文件;@Configuration注解类上的@PropertySource;
通过SpringApplication.setDefaultProperties指定的默认属性。
其中yml文件的配置与properties文件只是简写和缩进的差别,因此差异并不大。
三、参考资料
《深入浅出Spring boot2.x》