# 聚合工程整合 SpringBoot

在顶级项目中的 pom.xml 中配置如下类容


    <!-- 设置资源属性-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <!-- 依赖包版本管理 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
        <relativePath/>
    </parent>

    <!-- 配置仓库地址,加速依赖包的下载 -->
    <repositories>
        <repository>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <!--   排除 spring 自己的日志,后续需要整合其他的日志框架-->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 配置文件解析,boot 默认对 yml 支持,其他格式的需要引入该依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

其他资源填充

# api 项目

添加启动类 Application.java

package cn.mrcode.foodiedev;


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);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13

添加测试 HelloController.java

package cn.mrcode.foodiedev.api.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public Object hello() {
        return "Hello Word";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

maven 和 gradle 使用上还不太相同,感觉每次陪着完都需要执行下 install,才能正常运行。

在 resources 下增加 application.yml

server:
  port: 9000
1
2

启动项目后访问 http://localhost:9000/hello 能响应信息则说明初步整合成功了。

# 有关包名的说明

下一章会讲解 SpringBoot 的自动装备内容,为了使用默认扫描配置,我们这里的策略是如下所示

cn.mrcode.foodiedev
  |- Application.java       # 放置的是 api 的 Application 类
	|- api
	|- pojo
  |- mapper							
1
2
3
4
5

因为我们的启动应用在 api 里面,但是这里将 Application 放置在包 api 的同级目录下,那么它默认扫描的包路径则是 cn.mrcode.foodiedev,那么此路径下的其他模块被 api 引用之后,不需要额外的配置就可以扫描到他们里面的这些注解配置了