# JeecgBoot 单体升级微服务方案(十分钟搞定) [2020-09-14 | v2.3.0 版本] > 当前系统分为system、demo 等模块,现有需求把每个模块单独启动作为微服务应用,故而推出新版boot【2020-09-14 | v2.3.0 版本】,支持快速切换成cloud,本项目cloud技术栈为: * 服务注册:nacos * 配置中心:nacos-config * 理由网关: gateway * 服务间调用:openfeign * 熔断和降级:sentinel * 服务监控:Spring Boot Admin **视频教程 :**[点击我去B站](https://www.bilibili.com/video/BV1Y541147m1?p=19) **目录:** [TOC] ## 一、启动jeecg-system服务 升级system模块为独立服务 ### 1.将system项目的pom文件中的其他模块的依赖删除,只保留local-api ![](https://img.kancloud.cn/71/c4/71c48f939c3f325ce44cf55250c7b5c2_988x270.png) ### 2.system项目作为微服务启动,需要添加微服务依赖 ~~~ <!-- nacos --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 如果走配置中心需要添加此依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> --> <!-- 服务降级 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> ~~~ ### 3.在resource文件夹下新建bootstrap.yml,内容如下: ~~~ server: port: 7001 spring: profiles: active: dev application: name: jeecg-system cloud: nacos: discovery: server-addr: 127.0.0.1:8848 feign: sentinel: enabled: true ~~~ ### 4.修改dev配置文件,删除截图中两处配置 ![](https://img.kancloud.cn/34/16/34160e1fb6614980b8992b54532a45bd_1264x302.png) ### 5.启动类添加注解:`@EnableDiscoveryClient` ## 二、启动jeecg-demo服务 升级其他模块为独立服务(例如demo模块) 以demo为例: ### 1.修改pom,将local-api修改成cloud-api ![](https://img.kancloud.cn/05/36/05361d9402e022980f781affecdf3d40_792x154.png) ~~~ <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-system-cloud-api</artifactId> </dependency> ~~~ ### 2.添加配置文件bootstrap.yml(如果没有),内容如下: ~~~ server: port: 7002 spring: profiles: active: dev application: name: jeecg-demo cloud: nacos: discovery: server-addr: 127.0.0.1:8848 feign: sentinel: enabled: true ~~~ ### 3.新增配置文件application-dev.yml(如果没有),内容可以直接复制system下的同名文件,并删除此处端口号 ![](https://img.kancloud.cn/67/71/677137518ff39337f747ce9146bd146a_467x112.png) ### 4.在org.jeecg包下新建启动类(如果没有) ~~~ package org.jeecg; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; import java.net.UnknownHostException; @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class JeecgDemoApplication { public static void main(String[] args) throws UnknownHostException { SpringApplication.run(JeecgDemoApplication.class, args); } } ~~~ 上述步骤完成 即可启动nacos 运行每个模块的启动类 测试微服务。 ## 三、启动Nacos 微服务通过Nacos 实现服务注册发现 docke安装nacos文档: https://nacos.io/zh-cn/docs/quick-start-docker.html ### 1.启动nacos,访问`localhost:8848/nacos` 账号密码 都是nacos,查看服务列表 ![](https://img.kancloud.cn/c6/ce/c6ce1fb2ae6ab3fe1459fc0991ef3f78_1898x736.png) ### 2.启动system、demo,再查看服务列表 ![](https://img.kancloud.cn/7b/a2/7ba2e56109126635a8247639cbedbc86_1892x472.png) ## 四、启动gateway 启动类: org.jeecg.JeecgGatewayApplication ![](https://img.kancloud.cn/87/88/87885c28259eac8c679ca8ad35ae108e_1859x420.png) 查看在线接口文档: http://127.0.0.1:9999/doc.html ![](https://img.kancloud.cn/3f/95/3f95bbb61a3fc65b937ac3a9e6dfd027_1602x780.png) ## 五、启动前端 前端项目找到文件`public/index.html`,修改后台服务为 gateway地址 修改地址:` window._CONFIG['domianURL'] = 'http://127.0.0.1:9999`,其中端口号 `9999`和gateway的端口保持一致 ![](https://img.kancloud.cn/51/14/5114c0b2eba1b514e7f24fa5d304ce72_1005x518.png) ---- ### #常见问题 #1. gateway启动报错,需要手工编译下gateway项目 ![](https://img.kancloud.cn/05/5c/055c9a44d219a1e73cca2184672c7ad8_435x410.png) #2. demo项目启动报错javax.mail.AuthenticationFailedException: 535 Error: authentication failed 可以忽略不影响 ### #下面可以忽略 #备注:前后端交互需要修改一些配置 1.每个服务yml配置中有个属性 `context-path: /jeecg-boot`,服务化后需要修改成`/`,或者直接删除该配置 2. 跨域设置,此设置可以忽略,文档留作记录 ``` # 跨域问题注释掉这俩类的跨域设置 org/jeecg/config/shiro/filters/JwtFilter.java:65 org/jeecg/config/WebMvcConfiguration.java:49 ```