源码结构
1. 源码结构
.
├─common
│ ├─src
│ │ └─main
│ │ └─java
│ │ └─com.acrel
│ │ ├─api
│ │ ├─entity
│ │ ├─enums
│ │ ├─exceptions
│ │ └─utils
│ └─pom.xml ①
├─service-system
│ ├─src
│ │ ├─main
│ │ │ └─java
│ │ │ └─com.acrel
│ │ │ ├─sys
│ │ │ └─ServiceSystemApplication
│ │ └─resources
│ │ ├─mybatis
│ │ ├─application.yml ④
│ │ └─bootstrap.yml ⑤
│ └─pom.xml ②
└─pom.xml ③
2. pom.xml
整体源码结构如上图所示,可以看到其中包含了①②③共3处pom.xml
,说明这整体是一个maven工程,其中包含2个子模块common和service-system,也都是maven工程。
其中的③对整个项目依赖的maven包的版本进行了统一管理
<properties>
<acrel-basic.version>2.0.30</acrel-basic.version>
...
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.acrel</groupId>
<artifactId>acrel-basic</artifactId>
<version>${acrel-basic.version}</version>
</dependency>
</dependencies>
...
</dependencyManagement>
注:
artifactId: acrel-basic
是对业务类应用开发所需要用到的常见实体、通用接口、注解、工具类等进行的封装,开发时可以直接调用其中的类和接口,提高开发效率。
①②根据模块的具体需要,声明了依赖的maven包,因为继承了③,此处直接③中声明的版本,无需再次声明。
<dependencies>
<dependency>
<groupId>com.acrel</groupId>
<artifactId>acrel-basic</artifactId>
</dependency>
...
</dependencies>
3. common 和 service-system
之所以要将项目拆分为common和service-system两个模块,是因为需要同时兼顾单节点应用和分布式应用的开发。
从 pom.xml② 中可以看到,service-system模块将common模块作为依赖引入。当开发单应用时,只需要基于service-system模块进行开发;而当需要进行分布式开发时,只需要在项目中新开一个模块(例如:service-charging)即可,然后通过feign进行模块间的服务访问。
4. 配置文件
项目包含2个配置文件,bootstrap.yml
和application.yml
。
当进行单应用开发时,使用application.yml
,进行分布式开发时,使用bootstrap.yml
,然后将application.yml
中的内容配置到nacos中,并且删除application.yml
,否则项目仍旧会以本地的application.yml
文件启动。