# 项目开发流程
# 一、概述
需求分析
数据库设计,概要设计
详细设计
编码
- 环境搭建
- 库表入库,中间件等等配置
- 微服务项目搭建,模块拆分等
- docker部署文档等
- 编码,工具类等
- 环境搭建
部署测试环境
准备部署文档
部署生产环境
# 二、微服务项目开发流程
# 1.技术选型
- springboot+springcloud+springcloudalibaba
- mysql+nacos+redis
# 2.开发流程
创建父项目 cloud-ufs
主要设置
springboot
springcloud
springcloudalibaba
版本和依赖<properties> <spring-cloud.version>Hoxton.SR8</spring-cloud.version> <springboot.version>2.3.2.RELEASE</springboot.version> <springcloudalibaba.version>2.2.5.RELEASE</springcloudalibaba.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${springboot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${springcloudalibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
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创建子项目,很多个
- 必要依赖
web
discovery-client
- 启动类相关注解等
@EnableDiscoveryClient
- 配置
application.properties
端口 应用名 nacos地址 - 写个测试的Controller
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--服务注册 发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
1
2
3
4
5
6
7
8
9
10
11- 必要依赖
网关 gateway服务
配置文件
application.yml
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--服务注册 发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
1
2
3
4
5
6
7
8
9
10
11server.port: 8888 spring.application.name: GATEWAY spring.cloud.nacos.server-addr: 127.0.0.1:8848 spring.cloud.gateway.routes: - id: provider_route # 服务一,服务提供者一 uri: lb://PROVIDER predicates: - Path=/provider/demo filters: - StripPrefix=1 # 向后端service路由时,去掉网关添加的provider - id: consumer_route # 服务二,服务消费者一 uri: lb://CONSUMER predicates: - Path=/consumer/demo filters: - StripPrefix=1 # 向后端service路由时,去掉网关添加的consumer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17测试访问是否通着
- 访问网关 http://localhost:8888/provider/demo -> 路由到 http://localhost:8081/demo 服务提供者
- 访问网关 http://localhost:8888/consumer/demo -> 路由到 http://localhost:8082/demo 服务消费者
接下来开始写业务代码等
- 导包 mysql mybatis druid等
- 配置文件 数据源 mybatis配置 日志配置
- 增删改查 自动生成代码等 事务等
- 其他各种业务代码....
各模块互相调用
导入openfeign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
1
2
3
4启动类注解
@EnableFeignClients
feign包下新增服务提供者接口
@FeignClient("PROVIDER") public interface ProviderClients { //接口声明 @GetMapping("/provider/list") public List<Object> list(); }
1
2
3
4
5
6
抽取公共部分到common里
- 公共依赖 web、openfeign、nacos-discover等、数据源等
- 公共代码,pojo类等
- 统一配置管理等 比如使用Nacos配置中心
使用Nacos统一配置中心,比如各子模块的application配置,网关等
nacos新增配置
namespace 存放微服务项目配置信息 一般一个项目一个命名空间
新增配置
data-id
provider-dev.properties
# 一般是应用名-环境.propertiesGroup
PROVIDER
# 可以是微服务的名字
引入依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
1
2
3
4新建
bootstrap.properties
配置文件spring.cloud.nacos.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=uuid spring.cloud.nacos.config.group=PROVIDER spring.cloud.nacos.config.name=provider-dev.properties spring.cloud.nacos.config.file-extension=properties
1
2
3
4
5
通过网关调用测试
部署
打包 一般跳过测试
必须要有插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
1
2
3
4
5
6
7
8命令
mvn clean package -Dskip.test=true
docker-compose方式。或者
java -jar
手动方式都行
# 三、SpringBoot项目开发前框架搭建
基础项目应该引入的相关工具依赖
- Swagger文档,或者Knife4j等
- 统一返回 Result 对象
- 通用分页对象 MybatisPlus自带的也行
- 常用工具类
fastjson
、hutool
等 - 全局异常处理和自定义异常
- 错误枚举
- 多环境配置文件
- 日志配置
- 其他