概要
Spring Boot 不是 Spring, 而是一个新的项目. 这个项目提供了一完整的框架, 可以用来开发 web 程序. Spring Boot 的主旨在于提供一个良好的开发体验.
初始化
SPRING INITIALIZR 是一个提供起始程序包的网站. 我们如果想借助 Spring Boot 开发一个 web 程序, 可以先去这个网站上取得一个模板.
Maven 和 Gradle 两种工具都可以构建 Spring Boot 工程. 这里建议采用 Maven, 主要原因是Maven构建的Spring Boot 的文档资料要多于Gradle
从Spring Initializer 网站上下载下来的工程目录类似如下:
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── milo
│ │ └── DevicekeeperApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── milo
└── DevicekeeperApplicationTests.java
第一行代码
@RestController 和 @Controller
- RestController的定义里面包含了 Controller 和 ResponseBody.
- RestController的使用中, 包含了一个默认的 ResponseBody.
举个栗子, 原有的写法:
@Controller
class A
...
@ResponseBody
public pageA()
使用了@RestController后,就不需要@ResponseBody了.
@RestController
class A
...
public pageA()
接下来我们创建第一页面:
@SpringBootApplication
@EnableAutoConfiguration
@RestController
public class DevicekeeperApplication {
@RequestMapping("/")
public String devices() {
return "Hello World";
}
public static void main(String[] args) {
...
@EnableAutoConfiguration 是提示以注解的方式配置应用. 虽然 Spring 支持 xml 的方式, 但是 Spring Boot 官方推荐使用 Class 来代替 Xml
在工程路径下, 输入
mvn spring-boot:run
接下来通过 localhost:8080 就可以看到 "Hello World" 了.
需要提前安装配置好 maven
打包
使用下面的命令, 可以将程序打到一个可执行的 jar 包中, 前提是
mvn package
前提是 pom.xml 中已经
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
页面
上面的例子中, 我们简单打印出了"Hello World"文字. 接下来我们尝试一个 UI 页面.
我们可以直接将"Hello World"替换成html代码
但是这样岂不是很笨? 一般来说, 都是用模板引擎来进行 UI 的页面的渲染.
Spring Boot 的模板引擎有很多, 整理我们采用官方推荐的Thymeleaf.
为了使用这个模板引擎, 我们需要稍稍修改一下我们的程序
@SpringBootApplication
@EnableAutoConfiguration
@Controller
public class DevicekeeperApplication {
@RequestMapping("/")
public String devices() {
return "devices";
}
我们替换了@RestController 为@Controller, 函数的返回值直接变成了一个字符串. 这个字符串代表模板的名字.
接下来我们在 src/main/resources/templates下, 添加一个名字是 "devices.html"的模板
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
</head>
<body>
<h>Hi</h>
</body>
</html>
重新运行程序, 会看到 localhost:8080页面变成了"Hi".
这里需要注意的是 Thymeleaf 需要每个 html 标签都是闭合的. 所以虽然下面的写法在 html 中是对的, 但是"Thymeleaf"会报错.
<meta charset="utf-8">
需要改成:
<meta charset="utf-8"/>
调整样式
页面的样式当然是通过调整模板的 html 来实现了. 我们需要知道 SpringBoot 应用会有一个默认的静态资源路径, 用来存放页面使用的静态 css, js等文件.
我们可以通过如下的路径引用:
<link rel="stylesheet" href="/css/typo.css"/>
注意, 这里的"/css" 代表的是默认资源路径的根目录. 这个例子中, typo.css在工程中的位置如下:
─ resources
├── application.properties
├── static
│ └── css
│ └── typo.css
自动重启
开发的时候可能需要自己的server能够监视到代码的变化而自动运行服务. 配置插件的fork 为 true:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
数据的增删改查
请参考这篇文章
使用Spring Data进行数据访问
上传文件
鉴权
制作Docker
Docker的制作, 可以参考这篇
网友评论