入门 Spring Boot

概要

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的制作, 可以参考这篇

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容