springboot学习与回顾-创建一个springboot项目

1.创建springboot 项目

从Spring Initializr开始Spring Boot开发的方法。因为选择哪种方法都行,所以要选个最合适的,着手用Spring Boot开发就好了。登录https://start.spring.io/,我们要用Spring MVC来处理Web请求,用Thymeleaf来定义Web视图,用Spring Data JPA来把阅读列表持久化到数据库里,姑且先用嵌入式的H2数据库。虽然也可以用Groovy,但是我们还是先用Java来开发这个应用程序吧。此外,我们使用Gradle作为构建工具。

无论是用Web界面、Spring Tool Suite还是IntelliJ IDEA,只要用了Initializr,你就要确保勾选了Web、Thymeleaf和JPA这几个复选框。还要记得勾上H2复选框,这样才能在开发应用程序时使用这个内嵌式数据库。使用的信息如下:

springboot学习与回顾-创建一个springboot项目

图1-1 使用Initializr的Web界面初始化应用程序

2.查看初始化的springboot项目结构

选择explore,可以打开查看项目结构,如图2-1所示:

springboot学习与回顾-创建一个springboot项目

图2-1 初始化后的springboot项目结构

整个项目结构遵循传统Maven或Gradle项目的布局,即主要应用程序代码位于src/main/java目录里,资源都在src/main/resources目录里,测试代码则在src/test/java目录里。此刻还没有测试资源,但如果有的话,要放在src/test/resources里。

再进一步,你会看到项目里还有不少文件。

  • build.gradle:Gradle构建说明文件。
  • DemoApplication.java :应用程序的启动引导类(bootstrap class),也是主要的Spring配置类。
  • application.properties :用于配置应用程序和Spring Boot的属性。
  • DemoApplicationTests.java :一个基本的集成测试类。

先让我们来看看 DemoApplication.java 。

1.启动引导Spring

DemoApplication 在Spring Boot应用程序里有两个作用:配置和启动引导。首先,这是主要的Spring配置类。虽然Spring Boot的自动配置免除了很多Spring配置,但你还需要进行少量配置来启用自动配置。正如代码所示,这里只有一行配置代码。

package readinglist;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
# 开启组件扫描和自动配置
@SpringBootApplication
public class ReadingListApplication {
public static void main(String[] args) {
# 负责启动引导应用程序
SpringApplication.run(ReadingListApplication.class, args);
}
}

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

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

  • Spring的 @Configuration :标明该类使用Spring基于Java的配置。虽然本书不会写太多配置,但我们会更倾向于使用基于Java而不是XML的配置。
  • Spring的 @ComponentScan :启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。本章稍后会写一个简单的Spring MVC控制器,使用 @Controller 进行注解,这样组件扫描才能找到它。
  • Spring Boot 的 @EnableAutoConfiguration : 这 个 不 起 眼 的 小 注 解 也 可 以 称 为@Abracadabra,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。

你几乎不需要修改 DemoApplication.java 。如果你的应用程序需要Spring Boot

自动配置以外的其他Spring配置,一般来说,最好把它写到一个单独的 @Configuration 标注的类里。(组件扫描会发现并使用这些类的。)极度简单的情况下,可以把自定义配置加入DemoApplication.java 。

2. 测试springboot程序

Initializr还提供了一个测试类的骨架,可以基于它为你的应用程序编写测试。但

DemoApplicationTests (代码)不止是个用于测试的占位符,它还是一个例子,告诉你如何为Spring Boot应用程序编写测试。

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
#通过springboot加载上下文
@SpringBootTest
class DemoApplicationTests {

  # 测试加载的上下文
  @Test
  void contextLoads() {
  }

}

ReadingListApplicationTests 里还有一个简单的测试方法,即 contextLoads() 。实

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

ReadingListApplication 里定义的配置是好的,就能通过测试。如果有问题,测试就会失败。

当然,现在这只是一个新的应用程序,你还会添加自己的测试。但 contextLoads() 方法是个良好的开端,此刻可以验证应用程序提供的各种功能。后边的文章会更详细地讨论如何测试SpringBoot应用程序。

3.配置应用程序属性

Initializr为你生成的application.properties文件是一个空文件。实际上,这个文件完全是可选的,你大可以删掉它,这不会对应用程序有任何影响,但留着也没什么问题。

稍后,我们肯定有机会向application.properties里添加几个条目。但现在,如果你想小试牛刀,可以加一行看看:

server.port=8000

加上这一行,嵌入式Tomcat的监听端口就变成了8000,而不是默认的8080。你可以重新运行应用程序,看看是不是这样。

这说明application.properties文件可以很方便地帮你细粒度地调整Spring Boot的自动配置。你还可以用它来指定应用程序代码所需的配置项。在第3章里我们会看到好几个例子,演示application.properties 的这两种用法。

要注意的是,你完全不用告诉Spring Boot为你加载 application.properties ,只要它存

在就会被加载,Spring和应用程序代码都能获取其中的属性。

我们差不多已经把初始化的项目介绍完了,下一篇文章,让我们来看看Spring Boot应用程序是如何构建的。

上一篇:springboot 自动配置微调


下一篇:ArcEngine10.x开发的许可问题