![分布式微服务架构:原理与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/305/27563305/b_27563305.jpg)
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文件、配置文件等。
![](https://epubservercos.yuewen.com/59EAA8/15825992004143606/epubprivate/OEBPS/Images/Figure-P35_1812.jpg?sign=1738811837-m7SzPI0FUTzMeJXpK5dOCfDiClDt9xWA-0-ef6d4091ea11cffe2b355df0854be6c7)
图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。入口类的代码很简单,代码如下:
![](https://epubservercos.yuewen.com/59EAA8/15825992004143606/epubprivate/OEBPS/Images/Figure-P36_40760.jpg?sign=1738811837-mrqJamrXQ3E1SJ9lgW1ciTonFHL0npMg-0-07cf972a8f4771b95094d412338caa12)
- @SpringBootApplication:一个组合注解,包含@EnableAutoConfiguration、@ComponentScan和@SpringBootConfiguration三个注解,是项目启动注解。如果使用这三个注解,项目依旧可以启动起来,只是过于烦琐。因此,需要用@SpringBootApplication简化。
- @SpringApplication.run:应用程序开始运行的方法。
注 意
MySpringBootApplication入口类需要放置在包的最外层,以便能够扫描到所有子包中的类。
2.4.3 Spring Boot测试类
Spring Boot的测试类主要放置在/src/test/java目录下。项目创建完成后,Spring Boot会自动为我们生成测试类MySpringBootApplicationTests.java。其类名也是根据“项目名称+ApplicationTests”生成的。测试类的代码如下:
![](https://epubservercos.yuewen.com/59EAA8/15825992004143606/epubprivate/OEBPS/Images/Figure-P36_40761.jpg?sign=1738811837-8X7l0byQZa2WJCXCVU2WWsWO2Dqz2fzB-0-a1ff959e79d809d36d3fd67e7129b8b3)
- @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文件主要用来存放依赖信息。具体代码如下所示:
![](https://epubservercos.yuewen.com/59EAA8/15825992004143606/epubprivate/OEBPS/Images/Figure-P37_40764.jpg?sign=1738811837-GncLOZ7E0hcheNaq27t4Yae5Ag9FIB8s-0-06112f72658f7e84fae1e14d10a6d1c9)
- 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文件。