1.4.1 工程目录
Spring Boot的工程目录如图1-12所示。
图1-12 Spring Boot工程目录
-
/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文件、配置文件等。
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端口。
1.4.2 入口类
入口类的类名是根据项目名称生成的,我们的项目名称是my-spring-boot,故入口类的类名是项目名称+Application,即MySpringBootApplication.java。入口类的代码很简单,代码如下:
-
@SpringBootApplication:是一个组合注解,包含@EnableAutoConfiguration、@ComponentScan和@SpringBootConfiguration三个注解,是项目启动注解。如果我们使用这三个注解,项目依旧可以启动起来,只是过于烦琐。因此,用@SpringBootApplication进行简化。
-
@SpringApplication.run:应用程序开始运行的方法。
提示
入口类需要放置在包的最外层,以便能够扫描到所有子包中的类。
1.4.3 测试类
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引入了入口类的配置。
1.4.4 pom文件
Spring Boot项目下的pom.xml文件主要用来存放依赖信息。具体代码如下(部分代码已省略):
bRFkJ9xi9ri2sWqtMqGs0EN5vCJ+KynA4+t6+iIwc25S6z2aO7/O+C4MBKGpyoAD
-
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文件。