微服务-服务注册发现、配置、网关
SpringBoot整合MyBatis-Plus

一、整合MyBatis-Plus
1)、导入依赖
1 | <!-- mybatis-plus--> |
2)、配置
1.配置数据源:
a.导入数据库的驱动
1 | <!-- 导入mysql驱动 --> |
b.在application.yml配置数据源相关信息
如:
1 | spring: |
2.配置MyBatis-Plus:
a.在启动类中使用MapperScan注解扫描dao层下的mapper接口(右键Copy Path -> Copy Reference)

b.在application.yml中告诉MyBatis-Plus,sql映射文件位置并设置id自增
1 | mybatis-plus: |

远程调用其他微服务
一、使用openFeign
1)、引入openFeign
1 | <dependency> |
2)、编写一个接口,告诉Spring Cloud这个接口需要调用远程服务(建议单独建一个feign包来存放远程调用的接口)
声明接口的每一个方法都是调用哪个远程服务的哪个请求

@FeignClient()放入需要调用远程服务的微服务名
@RequestMapping()中需要填写完整的接口路径
3)、开启远程调用功能
启动类上添加@EnableFeignClients注解
1 |
|
Nacos服务注册中心
Nacos服务搭建
- 下载安装包
- 解压
- 在bin目录下运行指令:startup.cmd -m standalone
- 默认服务地址端口为localhost:8848,可以在conf配置文件中修改端口
Nacos服务注册或发现
- 引入nacos.discovery依赖
- 配置nacos地址spring.cloud.nacos.server-addr
- 使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
1 |
|
Nacos配置管理
一、将配置统一到nacos配置中心
1)、引入nacos-config依赖
1 | <!-- ncaos配置中心--> |
2)、在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据
1 | spring.application.name=nacos-config-example |
3)、需要给配置中心默认添加一个数据集(Data Id)henrymail-coupon.properties。默认规则:应用名.properties
1、添加的配置的详情如下
1 | dataId 为 nacos-config-example.properties |

2、动态获取配置
添加@RefreshScope 动态获取并刷新配置

开启后就可以直接在nacos管理界面直接修改配置无需重新打包部署项目
@Value(“${配置项的名}”),获取到配置。
如果配置中心和当前应用都配置了相同的项优先使用配置中心
二、命名空间:配置隔离
1)、默认:public(保留空间):默认新增的所有配置都在public空间中。
1、开发、测试、生产:利用命名空间来做环境隔离。
注意:在bootstrap.properties配置上,需要使用哪个命名空间下的配置。
1 | spring.cloud.nacos.config.namespace=a5e74974-aa6c-4009-9087-692b88dad128 |
2、每一个微服务之间互相隔离,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

3)、配置分组:
默认所有配置集都属于:DEFAULT_GROUP:
可以配置每个微服务中不同环境下的分组
项目中的使用:每个微服务自己的命名空间,使用配置分组区分环境,dev,test,prod
1 | spring.application.name=henrymail-coupon |

三、同时加载多个配置集
1)、微服务任何配置信息、任何配置文件都可以放在配置中心中
2)、只需要在bootstrap.properties说明加载配置中心哪些配置文件即可
1 | spring.application.name=henrymail-coupon |

3)、@Value、@ConfigurationProperties。。。
以前SpringBoot任何方法从配置文件中获取值,都能使用。
配置中心有的优先使用配置中心的
网关 SpringCloud-Gateway
一、核心配置
1)、导入Gateway依赖
1 | <dependency> |
2)、将自己注册到nacos注册中心和配置管理中去
bootstrap.properties:
1 | spring.application.name=henrymail-gateway |
application.properties:
1 | # 应用名称 |
3)、配置路由规则(参照SpringCloud-Gtaeway官网找相对应的路由规则)
如:application.yml:
1 | spring: |
请求参数中包含url=???时,gateway会路由到对应的uri
