2.4 Spring Boot目录介绍
2.4.1 Spring Boot工程目录
Spring Boot的工程目录如图2-15所示。
-
/src/main/java:目录下放置所有的Java文件(源代码文件)。
-
/src/main/resources:用于存放所有的资源文件,包括静态资源文件、配置文件、页面文件等。
-
/src/main/resources/static:用于存放各类静态资源。
-
/src/main/resources/application.properties:配置文件,这个文件非常重要。Spring Boot默认支持两种配置文件类型(.properties和.yml)。
-
/src/main/resources/templates:用于存放模板文件,如Thymeleaf(这个技术不懂不用着急,以后会介绍)模板文件。
-
/src/test/java:放置单元测试类Java代码。
-
/target:放置编译后的.class文件、配置文件等。
图2-15 Spring Boot项目目录
Spring Boot将很多配置文件进行了统一管理,且配置了默认值。Spring Boot会自动在/src/main/resources目录下找application.properties或者application.yml配置文件。找到后将运用此配置文件中的配置,否则使用默认配置。这两种类型的配置文件有其一即可,也可以两者并存。两者区别如下:
application.properties:
server.port = 8080
application.yml:
server:
port:8080
注 意
.properties配置文件的优先级高于.yml。例如在.properties文件中配置了server.port = 8080,同时在.yml中配置了server.port = 8090,Spring Boot将使用.properties中的8080端口。
2.4.2 Spring Boot入口类
入口类的类名是根据项目名称生成的,我们的项目名称是my-spring-boot,故入口类的类名是“项目名称+Application”,即MySpringBootApplication.java。入口类的代码很简单,代码如下:
-
@SpringBootApplication:一个组合注解,包含@EnableAutoConfiguration、@ComponentScan和@SpringBootConfiguration三个注解,是项目启动注解。如果使用这三个注解,项目依旧可以启动起来,只是过于烦琐。因此,需要用@SpringBootApplication简化。
-
@SpringApplication.run:应用程序开始运行的方法。
注 意
MySpringBootApplication入口类需要放置在包的最外层,以便能够扫描到所有子包中的类。
2.4.3 Spring Boot测试类
Spring Boot的测试类主要放置在/src/test/java目录下。项目创建完成后,Spring Boot会自动为我们生成测试类MySpringBootApplicationTests.java。其类名也是根据“项目名称+ApplicationTests”生成的。测试类的代码如下:
-
@RunWith(SpringRunner.class):@RunWith(Parameterized.class)参数化运行器,配合@Parameters使用Junit的参数化功能。查源码可知,SpringRunner类继承自SpringJUnit4ClassRunner类,此处表明使用SpringJUnit4ClassRunner执行器。此执行器集成了Spring的一些功能。如果只是简单的Junit单元测试,该注解可以去掉。
-
@SpringBootTest:此注解能够测试我们的SpringApplication,因为Spring Boot程序的入口是SpringApplication,所以基本上所有配置都会通过入口类去加载,而该注解可以引用入口类的配置。
-
@Test:JUnit单元测试的注解,注解在方法上,表示一个测试方法。
当我们右击执行MySpringBootApplicationTests.java中的contextLoads方法的时候,大家可以看到控制台打印的信息和执行入口类中的SpringApplication.run()方法打印的信息是一致的。由此便知,@SpringBootTest是引入了入口类的配置。
2.4.4 pom文件
Spring Boot项目下的pom.xml文件主要用来存放依赖信息。具体代码如下所示:
zem1hFGU5nSRD8CHDPlTc6g/ig2E2Tk/itO9GvkfMDVzVQP/r9cP3rHutDgZnQn4
-
spring-boot-starter-parent:一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。
-
spring-boot-starter-web:只要将其加入项目的Maven依赖中,就得到了一个可执行的Web应用。该依赖中包含许多常用的依赖包,比如spring-web、spring-webmvc等。我们不需要做任何Web配置,便能获得相关Web服务。
-
spring-boot-starter-test:这个依赖和测试相关,只要引入它,就会把所有与测试相关的包全部引入。
-
spring-boot-maven-plugin:一个Maven插件,能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能,能够将Spring Boot应用打包为可执行的JAR或WAR文件。