参考文章Nacos配置中心和Nacos注册中心
服务发现中心
第一步: 在Nacos中配置namespace
,点击左侧菜单命名空间
进入命名空间管理界面,新增开发(dev)/测试(test)/生产环境(prod)
的命名空间
第二步: 在xuecheng-plus-parent
父工程中添加springCloudAlibaba
的管理依赖
<properties>
<spring-cloud-alibaba.version>2.2.6.RELEASEspring-cloud-alibaba.version>
properties>
<dependencyManagement>
<dependencies>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-alibaba-dependenciesartifactId>
<version>${spring-cloud-alibaba.version}version>
<type>pomtype>
<scope>importscope>
dependencies>
dependencyManagement>
第二步: 在内容管理模块的接口工程
和系统管理模块的接口工程
中添加nacos服务发现依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
第三步: 添加配置将内容管理的接口工程和系统管理的接口工程注册到Nacos
# 注册内容管理的接口工程
spring:
application:
name: content-api # 注册的服务名称
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos服务的地址
discovery:
namespace: dev # 命名空间
group: xuecheng-plus-project # 组名
# 注册系统管理的接口工程
spring:
application:
name: system-api
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
namespace: dev
group: xuecheng-plus-project
第四步: 重启content-api服务和system-api服务
然后进入Nacos中查看服务列表
由于所有服务的api
工程都需要配置swagger
接口文档和logging
日志文件,这里可以将其定义为一个公用配置,哪个项目用引入即可
在Nacos的开发环境(dev)
的xuecheng-plus-common分组
下创建项目中所有接口工程公用的配置文件swagger-dev.yaml
## swagger 文档配置
swagger:
title: "学成在线内容管理系统"
description: "内容系统管理系统对课程相关信息进行业务管理数据"
base-package: com.xuecheng.content
enabled: true
version: 1.0.0
在Nacos的开发环境(dev)
中的xuecheng-plus-common
分组下创建项目中所有接口工程公用的配置文件logging-dev.yaml
## 日志文件配置路径
logging:
config: classpath:log4j2-dev.xml
远程配置service工程
第一步: 在内容管理服务和系统管理服务的service
工程的pom.xml
文件中添加Nacos配置依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
第二步: 在本地的service
工程的resources
中添加bootstrap.yaml
,以下这部分配置必须要配置到本地
spring.cloud.nacos.server-addr
属性获取Nacos地址${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
作为文件id
读取远程配置文件# 内容管理服务
spring:
application:
name: content-service
cloud:
nacos:
server-addr: localhost:8848
config:
namespace: dev
group: xuecheng-plus-project
file-extension: yaml
# 以上内容完成是引入content-service-dev.yaml文件
refresh-enabled: true
# 引入公用的日志配置文件路径
shared-configs:
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
#profiles默认为dev
profiles:
active: dev
# 系统管理服务
spring:
application:
name: system-service
cloud:
nacos:
server-addr: local:8848
config:
namespace: ${spring.profiles.active}
group: xuecheng-plus-project
file-extension: yaml
# 以上内容完成是引入system-service-dev.yaml文件
refresh-enabled: true
# 引入公用的日志配置文件路径
shared-configs:
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
profiles:
active: dev
第三步: 在Nacos的配置管理中选择开发环境(dev)
并添加content-service-dev.yaml
和system-service-dev.yaml
远程配置文件
# 内容管理服务
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/xc_content?serverTimezone=UTC&userUnicode=true&useSSL=false&
username: root
password: 123456
# 系统管理服务
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/xc_content?serverTimezone=UTC&userUnicode=true&useSSL=false&
username: root
password: 123456
第四步: 运行service
工程中的单元测试文件,如果可以正常读取数据库的数据,说明从nacos读取到了配置的数据源信息
@Test
void contextQueryCourseTest() {
PageResult<CourseBase> result = courseBaseInfoService.queryCourseBaseList(new PageParams(1L, 10L), new QueryCourseParamDto());
log.info("查询到数据:{}", result);
}
远程配置api工程
第一步: 在内容管理服务和系统管理服务的api
工程的pom.xml文件
中添加Nacos配置依赖,只有添加了该依赖才能读远程的配置文件
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
第二步: 在本地的api
工程的resources
目录下添加bootstrap.yaml
,以下这部分配置必须要配置到本地
api接口工程依赖service工程
,可以使用extension-configs
以扩展配置文件的方式引用content-service工程
用到的远程配置文件中的数据库配置# 内容管理服务
spring:
application:
name: content-api
cloud:
nacos:
server-addr: localhost:8848
discovery:
namespace: dev
group: xuecheng-plus-project
config:
namespace: dev
group: xuecheng-plus-project
file-extension: yaml
# 以上内容完成是引入content-api-dev.yaml
refresh-enabled: true
# 引入扩展的配置文件,可以引入多个
extension-configs:
- data-id: content-service-${spring.profiles.active}.yaml
group: xuecheng-plus-project
refresh: true
# 引入公用的配置
shared-configs:
- data-id: swagger-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
#profiles默认为dev
profiles:
active: dev
# 系统管理服务
spring:
application:
name: system-api
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
namespace: ${spring.profiles.active}
group: xuecheng-plus-project
config:
namespace: ${spring.profiles.active}
group: xuecheng-plus-project
file-extension: yaml
refresh-enabled: true
# 引入扩展的配置文件
extension-configs:
- data-id: system-service-${spring.profiles.active}.yaml
group: xuecheng-plus-project
refresh: true
# 引入公用的配置文件
shared-configs:
- data-id: swagger-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
- data-id: logging-${spring.profiles.active}.yaml
group: xuecheng-plus-common
refresh: true
profiles:
active: dev
第三步: 在Nacos的配置管理中选择开发环境(dev)
并添加content-api-dev.yaml
和system-api-dev.yaml
远程配置文件
# 内容管理服务
server:
servlet:
context-path: /content
# 这里可以切换端口进行测试远程配置文件是否生效
port: 63040
# 系统管理服务
server:
servlet:
context-path: /system
port: 63110
第四步: 重启content-api
工程,访问http://localhost:63040/content/swagger-ui.html查看swagger接口文档是否可以正常访问和控制台log4j2日志输出是否正常