最近开始接触spring boot , 看完了一本厚厚的<<spring boot实战>>,就被她强大的注解深深的吸引了.
那么她的注解强大在什么地方呢? spring boot 提倡零xml配置,可以完全拿掉繁重的spring.xml和web.xml.
接下来我们来看一个例子,感受一下配置的强大和简单
1. 一个简单的maven项目
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.sesame</groupId>
<artifactId>boot-dome</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<jdk.version>1.8</jdk.version>
</properties>
<dependencies>
<!--web支持,下面的thymeleaf依赖包含 web,所以这里可以去掉它-->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 处理资源文件的编码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
- src/main/java 里面的源码结构 我用的是 com.sesame
所以我们在 package com.sesame 下面新建一个App.java 作为程序的入口,为什么放在这里呢?因为 它默认会去扫描同级包里面的java类
App.java
package com.sesame;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author johnny
* @date 2017-06-10 12:41
* @classpath com.sesame
* @Description:
*/
@SpringBootApplication
public class App {
public static void main(String[] arr) {
SpringApplication.run(App.class, arr);
}
}
3 . 新建一个 controller 类
UserController.java
package com.sesame.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author johnny
* @date 2017-06-10 13:10
* @classpath com.sesame.controller
* @Description:
*/
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public String login(String name, String pwd, ModelMap modelMap){
modelMap.put("name",name);
modelMap.put("pwd",pwd);
modelMap.put("bean",name+":"+pwd);
modelMap.put("hello","from TemplateController.helloHtml");
return "index";
}
}
4.接下来是不是应该去 WEB-INF/jsp 下新建 index.jsp 了呢?
NO , 我们这里不使用jsp, 为什么呢?
因为 jsp 在boot内嵌的Servlet的容器上运行有些问题(内嵌tomcat,jetty不支持一jar形式存在的jsp,Undertow不支持jsp)
那怎么办呢? 在 spring boot 中推荐使用Thymeleaf 作为模板引擎,实际上我们待会新建的就是 index.html
5 src/main/resource 中新建一个application.properties 不要修改名称
application.properties
server.port=8080
server.context-path=/dome
#禁用页面缓存
spring.thymeleaf.cache=false
有兴趣的同学可以去看看这个类里面的配置,有很多是默认的
ThymeleafProperties
6 同样是在 resource/templates 中新建index.html, 不要修改目录名
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello World!</title>
</head>
<body>
123456
</body>
</html>
7 启动
有两种方式
1) 运行 App.java 里面的main方法
2) 执行 maven命令 mvn spring-boot:run
8 访问
http://localhost:8080/dome/user/login
是不是很简单,