View on GitHub

spring-boot-in-action

Spring Boot 实战笔记

开发第一个应用程序

创建项目

使用 Spring Initializr 开始初始化一个项目:

1561082025932

1561082579501

查看初始化的新项目

目录结构

readinglist/src
├─main
  ├─java
    └─com
        └─example
            └─demo
                    ReadinglistApplication.java
  
  └─resources
        application.properties
      
      ├─static
      └─templates
└─test
    └─java
        └─com
            └─example
                └─demo
                        ReadinglistApplicationTests.java

启动引导Spring

ReadinglistApplication 代码

@SpringBootApplication

@SpringBootApplication 开启了Spring的组件扫描和Spring Boot的自动配置功能。

实际上, @SpringBootApplication 将三个有用的注解组合在了一起:

main() 方法

要运行Spring Boot应用程序有几种方式,其中包含传统的WAR文件部署。

但这里的 main() 方法让你可以在命令行里把该应用程序当作一个可执行JAR文件来运行。

这里向 SpringApplication.run() 传递了一个 ReadingListApplication 类的引用,还有命令行参数,通过这些东西启动应用程序。

其他配置

如果你的应用程序需要Spring Boot自动配置以外的其他Spring配置,一般来说,最好把它写到一个单独的 @Configuration 标注的类里。(组件扫描会发现并使用这些类的。)

极度简单的情况下,可以把自定义配置加入 ReadingListApplication.java 。

运行程序

应用程序正常运行,会启动一个监听8080端口的 Tomcat 服务器。

可以用浏览器访问http://localhost:8080。

如果还没写控制器类,你只会收到一个HTTP 404(NOT FOUND)错误,看到错误页面。

测试Spring Boot应用程序

ReadinglistApplicationTests 代码

contextLoads()

实际上 contextLoads() 就是个空方法。

但这个空方法足以证明应用程序上下文的加载没有问题。

如果 ReadingListApplication 里定义的配置是好的,就能通过测试。

配置应用程序属性

application.properties 文件

application.properties文件可以很方便地帮你细粒度地调整Spring Boot的自动配置。

比如,调整嵌入式Tomcat的监听端口,就变成了8000,而不是默认的8080:

server.port=8000

开发应用程序功能

定义领域模型

Book 类

定义仓库接口

定义用于把 Book 对象持久化到数据库的仓库。

因为用了Spring Data JPA,所以我们要做的就是简单地定义一个接口,扩展一下Spring Data JPA的 JpaRepository 接口。

ReadingListRepository 类

Spring MVC控制器

ReadingListController 类

创建Web界面

src/main/resources/templates里创建一个名为readingList.html 的文件。

呈现阅读列表的 Thymeleaf 模板:readingList.html

为了美观,Thymeleaf模板引用了一个名为 style.css 的样式文件,该文件位于src/main/resources/ static目录中。

运行应用程序

初始状态(http://localhost:8000/test):

1561101489777

通过表单添加一些图书:

1561102100676

自动配置决策

通过Spring Boot的起步依赖和自动配置,你可以更加快速、便捷地开发Spring应用程序: