单体架构
Swagger在线接口文档
CodeGenerator 代码生成器
统一返回
通用的分页对象
常用工具类
全局异常拦截
错误枚举
自定义异常
多环境配置文件
Maven多环境配置
日志配置
JenkinsFile(centos安装JenkinsFile,构建部署spring boot项目)[参考](https://segon.cn/jenkins-deploy-springboot.html)
flyway
# 参考:https://blog.csdn.net/weixin_38405253/article/details/109040099
cloudalibaba
# 方案1
maven # 构建项目
shiro # 安全框架
springboot
cloudalibaba
mybtis-plus # 代码生成器
nacos # 服务注册中心、服务配置中心
sentinel # 服务熔断限流、降级
gateway # 隐藏真是ip地址,多个服务时用于负载均衡,前端访问不同端口的模块时,可用断言进行转发
openFeign # 服务调用
redis # 非关系型数据库
mysql # 关系型数据库
swagger # 测试框架
rabbitmq # 消息队列
sleuth # 集成了zipkin,用于链路跟踪
seata # 分布式事务
# 方案2
gradle、security、springboot、cloudalibaba、mybtis-plus、nacos、sentinel、gateway、openFeign、redis、mysql、swagger、rabbitmq、sleuth、seata
# IDEA自带的gradle与当前系统中配置的gradle版本不一致,会导致某些依赖无法导入
# 使用maven3.6.1及其一下版本,如3.8.2在拉取mybatis plus依赖时会报错
# 每个子模块的pom.xml中配置如下,方便之后每个微服务都能打成jar包部署
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
# 依赖冲突,可[参考](https://gitee.com/chnq/chnx/tree/master/cloud/seata/seata01)构建一个简单的分布式微服务项目,之后在该项目基础上不断集成框架
# cloud跨域问题
└── cloud-alibaba-demo
├── system # 集成1个安全框架,管理用户数据等
├── common # 公共模块,存放实体类、工具类等
├── file # 文件上传下载模块
├── gateway # 网关模块
├── provider # 例如一个服务提供者模块
├── consumer # 例如一个服务消费者模块
├── business # 例如这是一个业务模块
| ├── java
| | ├── config # 配置类
| | ├── mapper # 持久层
| | ├── controller # 控制层
| | ├── service # 业务层
| | | └── impl # 实现类
| | ├── model # 实体类
| | ├── vo # 视图对象,如req、resp
| | ├── utils # 工具包
| | └── Application # 启动类
| |
| └── resouces
| | ├── mapper.xml # xml文件
| | └── application.yml # yml文件
| |
│ ├── README.md
│ └── pom.xml # 子模块依赖管理
├── README.md
└── pom.xml # 父工程依赖管理
# 将某些后台监控页面显示在后台管理页面
1. sleuth
2. sentinel
3. nacos
4. Prometheus + Grafana:https://cloud.tencent.com/developer/article/1769920
5. swagger
6. rabbitmq
参考
每个微服务resource路径下配置多个yml外部配置文件
指标监控可视化
ddd + cloud + mybatis plus
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.example.demo.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: classpath:com/chnq/provide/domain/repository/mapper/xml/*.xml
@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan("com.chnq")
@MapperScan("com.chnq.provide.domain.repository.mapper")
public class Provide8081Application {
public static void main(String[] args) {
SpringApplication.run(Provide8081Application.class, args);
}
}