文章目录

  • 一、一个简单的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》