2.1、运用Spring Boot
初始化目录结构
上图是一个名为readinglist项目初始化后的目录结构
build.gradle:Gradle构建说明文件,如果是maven的话就没有这个,因为是在书上截的图,所以有这个文件,我比较喜欢使用maven。
ReadingListApplication.java:应用程序的启动引导类也是主要的Spring配置类。
application.properties:用于配置应用Spring Boot 的属性。
ReadingListApplicationTests.java:一个基本的集成测试类。
2.1.1启动引导类
启动引导类在Spring Boot应用中有两个作用:配置和启动引导。首先这是Spring主要的配置类。虽然Spring Boot自动配置免除了很多Spring配置,但是还需要少量的配置来启动自动配置。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //开启组件扫描和自动配置
public class Application {
//负责启动引导应用程序
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication开启了Spring的组件扫描和Spring的自动配置功能,实际上是将三个注解组合到了一起。
- Spring的@Configuration:标明该类使用基于java的配置,就是使用java类替代.xml配置
- Spring的@ComponentScan:启动组件扫描,就是自动扫包扫描那些@Bean @Controller @Service等等注解标注的方法或类到上下文
- Spring Boot的@EnableAutoConfiguration:书中作者称这个注解为Abraccadabra(咒语的意思),这个注解开启了Spring Boot的自动配置功能,不用再写成篇的配置了。
也就是说 @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration 你说厉害不厉害
@SpringBootApplication只有在Spring Boot 1.2.0版本以及之后的版本才有,如果是之前的版本就只能写三个注解了。
2.1.2 集成测试类
一个Java程序员必须写测试,虽然我之前很少写!
Spring Boot 在构建项目的时候提供了测试的骨架
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringRunner.class)// SpringJUnit支持,由此引入Spring-Test框架支持!
@SpringBootTest// 指定我们SpringBoot工程的Application启动类
@WebAppConfiguration // 由于是Web项目,Junit需要模拟ServletContext,因此我们需要给我们的测试类加
public class SpringBootDemo1ApplicationTests {
@Test
public void contextLoads() {
}
}
2.1.3配置应用程序属性
server.port=8080
以上代码在application.properties文件中配置,设置嵌入的Tomcat舰艇端口为8080,在应用启动之后Spring Boot 会默认加载(不需要哦欸之的)application.properties 并且根据文件中设置的属性设置应用程序。
2.1.4项目构建
目前比较常用的构建工具有Gradle和Maven,Gradle一直都没用过,我觉得Maven在依赖管理上来说更直观简单一些。
<?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>
<groupId>com.glp</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-boot-demo</name>
<description>Demo project for Spring Boot</description>
<parent><!--继承spring-boot-starter-parent-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--继承启动依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build><!--继承Spring Boot Maven插件-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2、起步依赖
2.3、自动配置