传送门:https://gitee.com/hackerjj/java
架构
GitLab 项目群
依照下列顺序创建即可
- jcloud-dependencies: 通用依赖版本控制:依赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。
- jcloud-parent: 通用父工程:产品线下的所有项目必须指定一个父工程项目,以复用 POM 的 `` 配置
- jcloud-commons: 通用类库工具类:如 HuTool 等开源类库依赖或二次开发等
- jcloud-generator: 通用代码生成器:如 MyBatis Plus 等其它开源类库或自定义代码生成器
- jcloud-repository: 数据访问层:与底层 MySQL、 Oracle、 Hbase 等进行数据交互。
- jcloud-business: 业务逻辑层:相对具体的业务逻辑服务层。
- jcloud-manager: 通用处理层:对第三方平台封装的层,预处理返回结果及转化异常信息。对业务逻辑层通用能力的下沉,如缓存方案、 中间件通用处理。与数据访问层交互,对多个数据访问层的组合复用。
- jcloud-controller: 请求处理层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
- jcloud-apiserver: 开放接口网关层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 HTTP 接口; 进行网关安全控制、 流量控制等。
- jcloud-cloud: 外部接口或第三方平台:包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。
- jcloud-oauth: 认证与授权:独立的认证与授权服务
- jcloud-all: 单体应用打包器:适用于产品的初期运营阶段,利用单体应用的便利性先上线属于临时过渡项目。
- jcloud-dashboard: 终端显示层:前后分离方案,采用 Vue + ElementUI 组件库实现的平台控制面板项目。
- jcloud-portal: 终端显示层:前后分离方案,采用 Vue + Vuetify 组件库实现的平台门户网站项目。
- bin: 用于存放构建工具的目录
- docs: 用于存放项目文档的目录
拉取代码到本地
在本地磁盘创建专门用于存放项目源码的目录,目录结构如下:
├─jcloud-services
│ ├─bin
│ ├─docs
│ ├─jcloud-all
│ ├─jcloud-apiserver
│ ├─jcloud-business
│ ├─jcloud-cloud
│ ├─jcloud-commons
│ ├─jcloud-controller
│ ├─jcloud-dependencies
│ ├─jcloud-generator
│ ├─jcloud-manager
│ ├─jcloud-oauth
│ ├─jcloud-parent
│ └─jcloud-repository
└─jcloud-views
├─jcloud-dashboard
└─jcloud-portal
所有项目源码均由 Git 托管,需要 Git 配置文件,Java 项目所需的配置
- .gitattributes
# Windows-specific files that require CRLF:
*.bat eol=crlf
*.txt eol=crlf
# Unix-specific files that require LF:
*.java eol=lf
*.sh eol=lf
- .gitignore
target/
!.mvn/wrapper/maven-wrapper.jar
## STS ##
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
## IntelliJ IDEA ##
.idea
*.iws
*.iml
*.ipr
## JRebel ##
rebel.xml
## MAC ##
.DS_Store
## Other ##
logs/
temp/
注意: 前端项目由
Vue CLI
生成,无需手动创建
后端工程配置
通用依赖
dependencies
通用依赖版本控制:依赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>通用依赖-Dependencies</description>
<!-- 软件配置管理:配合 maven-release-plugin 插件使用 -->
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-dependencies.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-dependencies.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-dependencies</url>
</scm>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Spring Projects -->
<spring-boot.version>2.3.0.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<spring-cloud-alibaba.verion>2.2.1.RELEASE</spring-cloud-alibaba.verion>
<!-- Cloud Service -->
<qiniu.version>7.2.29</qiniu.version>
<!-- Tools -->
<mybatis-plus.version>3.3.1</mybatis-plus.version>
<hutool.version>5.3.5</hutool.version>
<!-- Projects -->
<jcloud.version>1.0.0.RELEASE</jcloud.version>
<jcloud.development.version>1.0.1-SNAPSHOT</jcloud.development.version>
</properties>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<!-- 发布项目到 Nexus -->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://nexus.funtl.com/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://nexus.funtl.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.verion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- MyBatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- HuTool -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- 七牛云 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Maven 多环境配置 -->
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 用于自动发布 RELEASE TAG -->
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<!-- 配合 maven-release-plugin 插件发布到 Git(GitLab,GitHub 等) -->
<maven-scm-provider-jgit-plugin.version>1.9.5</maven-scm-provider-jgit-plugin.version>
<!-- Spring 提供的代码美化插件 -->
<spring-javaformat-maven-plugin.version>0.0.22</spring-javaformat-maven-plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>${spring-javaformat-maven-plugin.version}</version>
</plugin>
<!-- mvn scm -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<providerImplementations>
<git>jgit</git>
</providerImplementations>
<username>root</username>
<password>12345678</password>
<tagBase>${project.artifactId}-${project.version}</tagBase>
<goals>-f pom.xml deploy</goals>
<releaseLabel>${jcloud.version}</releaseLabel>
<releaseVersion>${jcloud.version}</releaseVersion>
<developmentVersion>${jcloud.development.version}</developmentVersion>
<preparationGoals>clean verify</preparationGoals>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-jgit</artifactId>
<version>${maven-scm-provider-jgit-plugin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
下面的仓库地址已全部配置到 Nexus 中,此处仅当作记录
<repositories>
<repository>
<id>aliyun-nexus</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestone</id>
<name>Spring Milestone</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<name>Spring Milestone</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-snapshot</id>
<name>Spring Snapshot</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
parent
通用父工程:产品线下的所有项目必须指定一个父工程项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>通用依赖-Parent</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-parent.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-parent.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-parent</url>
</scm>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Projects -->
<jcloud.version>1.0.0.RELEASE</jcloud.version>
<jcloud.development.version>1.0.1-SNAPSHOT</jcloud.development.version>
</properties>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://nexus.funtl.com/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://nexus.funtl.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-dependencies</artifactId>
<version>${project.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Maven 多环境配置 -->
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven-clean-plugin.version>3.1.0</maven-clean-plugin.version>
<maven-install-plugin.version>3.0.0-M1</maven-install-plugin.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
<maven-surefire-plugin.version>3.0.0-M4</maven-surefire-plugin.version>
<maven-enforcer-plugin.version>3.0.0-M3</maven-enforcer-plugin.version>
<maven-scm-provider-jgit-plugin.version>1.9.5</maven-scm-provider-jgit-plugin.version>
<spring-javaformat-maven-plugin.version>0.0.22</spring-javaformat-maven-plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>io.spring.javaformat</groupId>
<artifactId>spring-javaformat-maven-plugin</artifactId>
<version>${spring-javaformat-maven-plugin.version}</version>
</plugin>
<!-- mvn clean -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
<configuration>
<filesets>
<!-- 清理 JRebel 产生的备份文件 -->
<fileset>
<directory>${basedir}/**</directory>
<includes>
<include>.rebel.xml.bak</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<!-- mvn install -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${maven-install-plugin.version}</version>
</plugin>
<!-- JavaDoc 生成插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<!-- 生成 HTML 后 title 的名字 -->
<windowtitle>千锋达摩院 ${project.version} JavaDocs</windowtitle>
<!--
解决控制台乱码问题
需要在【环境变量】中添加【系统变量】
- 变量名:JAVA_TOOL_OPTIONS
- 变量值:-Dfile.encoding=UTF-8
-->
<charset>UTF8</charset>
<encoding>UTF8</encoding>
<docencoding>UTF8</docencoding>
<!--
生成 JavaDoc 所在目录:reportOutputDirectory/destDir
- reportOutputDirectory:输出的目录位置
- destDir:文档生成的目录位置
-->
<destDir>javadocs</destDir>
<reportOutputDirectory>${basedir}/docs</reportOutputDirectory>
</configuration>
</plugin>
<!-- 测试用例插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<!-- 设置默认跳过测试 -->
<skip>true</skip>
<includes>
<include>**/*Tests.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
</excludes>
<systemPropertyVariables>
<java.security.egd>file:/dev/./urandom</java.security.egd>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
</configuration>
</plugin>
<!--
依赖冲突检查
在进行 mvn clean package 的时候,会在 console 中打印出冲突的 jar 版本和其父 pom
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<executions>
<execution>
<id>enforce-rules</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>commons-logging:*:*</exclude>
</excludes>
<searchTransitive>true</searchTransitive>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<!-- mvn scm -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<providerImplementations>
<git>jgit</git>
</providerImplementations>
<username>root</username>
<password>12345678</password>
<tagBase>${project.artifactId}-${project.version}</tagBase>
<goals>-f pom.xml deploy</goals>
<releaseLabel>${jcloud.version}</releaseLabel>
<releaseVersion>${jcloud.version}</releaseVersion>
<developmentVersion>${jcloud.development.version}</developmentVersion>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-jgit</artifactId>
<version>${maven-scm-provider-jgit-plugin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
commons
通用类库工具类:如 HuTool 等开源类库依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-commons</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>通用依赖-Commons</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-commons.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-commons.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-commons</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<dependencies>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Commons -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
独立项目
generator
通用代码生成器:如 MyBatis Plus 等其它开源类库或自定义代码生成器
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-generator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>代码生成器</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-generator.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-generator.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-generator</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<dependencies>
<!-- Datasource -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatisPlus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
数据持久层
repository
数据持久层:与底层 MySQL、 Oracle、 Hbase 等进行数据交互。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-repository</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>持久层</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-repository.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-repository.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-repository</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- DataSource -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- Validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<!-- Commons -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
第三方平台
cloud
外部接口或第三方平台:包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-cloud</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>第三方平台服务或其他部门开放接口</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-cloud.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-cloud.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-cloud</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
<!-- Tools -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- Projects -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jcloud-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
通用处理层
manager
通用处理层:对第三方平台封装的层,预处理返回结果及转化异常信息。对业务逻辑层通用能力的下沉,如缓存方案、 中间件通用处理。与数据访问层交互,对多个数据访问层的组合复用。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-manager</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>通用处理层</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-manager.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-manager.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-manager</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- Projects -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jcloud-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
业务逻辑层
business
业务逻辑层:相对具体的业务逻辑服务层。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-business</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>业务逻辑层</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-business.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-business.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-business</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- Projects -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jcloud-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
认证与授权
oauth
认证与授权:独立的认证与授权服务
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-oauth</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>认证与授权</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-oauth.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-oauth.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-oauth</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<dependencies>
<!-- Spring Cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- Tools -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- 临时过渡:这里是为了使用 HuTool 发送邮件 -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<profiles>
<!--
Spring Boot 应用不能直接被当作类库依赖
通过 Maven 多环境配置功能解决
-->
<profile>
<id>microservice</id>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.jcloud.oauth.AuthApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
请求处理层
controller
请求处理层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-controller</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>请求处理层</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-controller.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-controller.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-controller</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
<!-- Commons -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
开放接口网关层
apiserver
开放接口网关层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 HTTP 接口; 进行网关安全控制、 流量控制等。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-apiserver</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>开放接口网关层</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-apiserver.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-apiserver.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-apiserver</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<modules>
<!-- 服务模块 -->
</modules>
<dependencies>
<!-- Spring Cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
单体应用打包器
all
单体应用打包器:适用于产品的初期运营阶段,利用单体应用的便利性先上线属于临时过渡项目。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jcloud</groupId>
<artifactId>jcloud-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>jcloud-all</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<url>http://www.jcloud.com</url>
<inceptionYear>2020-Now</inceptionYear>
<description>单体应用打包器</description>
<scm>
<connection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-all.git</connection>
<developerConnection>scm:git:http://gitlab.funtl.com/jcloud/jcloud-all.git</developerConnection>
<url>http://gitlab.funtl.com/jcloud/jcloud-all</url>
</scm>
<developers>
<developer>
<id>HJJ</id>
<name>Huang Junjun</name>
<email>hjjaddmin@gmail.com</email>
</developer>
</developers>
<dependencies>
<!-- 需要打包进单体的服务 -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.jcloud.all.AllApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
来源:oschina
链接:https://my.oschina.net/u/4063061/blog/4328469