说说 Spring Boot 项目结构

3,271 阅读2分钟

使用 Spring Initializr 构建好一个新项目之后,就类似下图的项目结构:

整个项目结构遵循 Maven 或 Gradle 项目的布局,即

路径 说明
src/main/java 程序代码。
src/main/resources 资源。
src/test/java 测试代码。
src/test/resources 测试资源。

除此之外,还有以下文件:

文件 说明
build.gradle Gradle 构建说明文件。
application.properties 项目和 Spring Boot 配置文件。
xxxApplication.java 项目启动引导类(bootstrap class),也是 Spring 主配置类。
xxxApplicationTests.java 测试类骨架。

1 启动类(xxxApplication.java)

xxxApplication.java 有两个功能:配置和启动引导。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MoviesApplication {

    public static void main(String[] args) {
        SpringApplication.run(MoviesApplication.class, args);
    }

}

注解 @SpringBootApplication 开启了 Spring 组件扫描和 Spring Boot 的自动配置功能 。 并将以下三个注解的功能整合在了一起:

注解 说明
@Configuration 标明该类是 Spring 基于 Java 的配置类 。
@ComponentScan 启用组件扫描,这样那些 POJO 才能被自动发现并注册为 Spring 应用上下文里中的Bean。
@EnableAutoConfiguration 开启 Spring Boot 自动配置 。

这里的 main() 方法会把当前项目作为一个可执行 JAR 文件来运行 。 这里向 SpringApplication.run() 传递了xxxApplication 类与命令行参数,然后启动项目 。

如果需要修改 Spring Boot 自动配置,那么可以修改此类。Spring 的其它配置,建议写在标注了@Configuration 的配置类中。

2 测试类(xxxApplicationTests.java)

Spring Initializr 还生成了一个测试类的骨架 xxxApplicationTests.java,我们可以基于它来为项目编写测试。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MoviesApplicationTests {

    @Test
    public void contextLoads() {
    }

}

该类自带 contextLoads() ,虽然是空方法,但只要测试通过,就说明 ***Application.java 配置正确:

3 配置文件(application.properties)

此为项目的配置文件。我们可以在此修改 Spring Boot 的默认配置项,比如修改嵌入式 Tomcat 的监听端口(默认为 8080):

# 嵌入式 Tomcat 的监听端口
server.port=8088

再次启动项目,就可以看到 Tomcat 的监听端口已经改为我们所配置的 8088 端口啦: