【Spring Cloud Alibaba】Nacos 配置中心(二)
【Spring Cloud Alibaba】Nacos 配置中心
1. 实战配置中心
官方文档: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Config,可以在Nacos Server集中管理Spring Cloud 应用的外部属性配置。

先在nacos中添加如下信息:

Data ID: com.tulingmall.order
Group: DEFAULT_GROUP
内容: user.name=徐庶
user.age=11
首先添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
启动类代码

配置中心需要使用bootstrap.yml 这里进行的是Nacos Config
注意:这里bootstrap.yml 中的spring.application.name要和Nacos中的配置中心的DataID一致

结果:



1.1 新建配置

DataID: 就可以理解为是配置文件的名称。


Group: 一般是某个项目
2. nacos-config扩展信息
Nacos客户端默认是properties格式信息。通过config:file-extension:yaml改为格式为yaml

2.1 可支持profile粒度的配置,就是 spring.profiles.active={profile}

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataId 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,还加载了dataId为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。


更改配置重新发布

2.2 支持自定义 namespace 的配置
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 上 Public 这个namespace。如果需要使用自定义的命名空间,可以通过以下配置来实现:
spring.cloud.nacos.config.namespace=dev or prod
注意:该配置必须放在 bootstrap.properties 文件中。此外 spring.cloud.nacos.config.namespace 的值是 namespace 对应的 id,id 值可以在 Nacos 的控制台获取。并且在添加配置时注意不要选择其他的 namespace,否则将会导致读取不到正确的配置。
2.3 支持自定义 Group 的配置
在没有明确指定${spring.cloud.nacos.config.group}配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:
spring.cloud.nacos.config.group=DEVELOP_GROUP
2.4 支持自定义扩展的 Data Id 配置
Spring Cloud Alibaba Nacos Config 从 0.2.1 版本后,可支持自定义 Data Id 的配置。
一个完整的配置案例如下所示:
spring.application.name=opensource-service-provider
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# config external configuration
# 1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新
spring.cloud.nacos.config.extension-configs[0].data-id=ext-config-common01.properties
# 2、Data Id 不在默认的组,不支持动态刷新
spring.cloud.nacos.config.extension-configs[1].data-id=ext-config-common02.properties
spring.cloud.nacos.config.extension-configs[1].group=GLOBALE_GROUP
# 3、Data Id 既不在默认的组,也支持动态刷新
spring.cloud.nacos.config.extension-configs[2].data-id=ext-config-common03.properties
spring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUP
spring.cloud.nacos.config.extension-configs[2].refresh=true
可以看到:
- 通过
spring.cloud.nacos.config.extension-configs[n].data-id的配置方式来支持多个 Data Id 的配置。 - 通过
spring.cloud.nacos.config.extension-configs[n].group的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。 - 通过
spring.cloud.nacos.config.extension-configs[n].refresh的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。
多个 Data Id 同时配置时,他的优先级关系是 spring.cloud.nacos.config.extension-configs[n].data-id 其中 n 的值越大,优先级越高。
spring.cloud.nacos.config.extension-configs[n].data-id 的值必须带文件扩展名,文件扩展名既可支持 properties,又可以支持 yaml/yml。 此时 spring.cloud.nacos.config.file-extension 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。
通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。
为了更加清晰的在多个应用间配置共享的 Data Id ,你可以通过以下的方式来配置:
# 配置支持共享的 Data Id
spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml
# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=GROUP_APP1
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true
可以看到:
- 通过 spring.cloud.nacos.config.shared-configs[n].data-id 来支持多个共享 Data Id 的配置。
- 通过 spring.cloud.nacos.config.shared-configs[n].group 来配置自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
- 通过 spring.cloud.nacos.config.shared-configs[n].refresh 来控制该Data Id在配置变更时,是否支持应用中动态刷新,默认false。
配置的优先级
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。
- A: 通过
spring.cloud.nacos.config.shared-configs[n].data-id支持多个共享 Data Id 的配置 - B: 通过
spring.cloud.nacos.config.extension-configs[n].data-id的方式支持多个扩展 Data Id 的配置 - C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
当三种方式共同使用时,他们的一个优先级关系是:A < B < C
新建一个公共的配置





2.5 最佳实践

- Namespace:用来区分环境(开发、测试、预发、生产),因为 Namespace 隔离最彻底,跨 Namespace 不能直接访问配置。示例:
dev、test、pre、prod - Group:用来区分项目(或大模块),同一 Namespace 下可以有多个项目的配置。 示例:
order-service、user-service、payment-service - DataId:用来对应具体的应用/工程配置文件,可以进一步细分配置内容。通常和
application.yml类似。示例:order-service.yaml、user-service.properties- 如果一个项目里有多份配置(如核心配置、数据库配置、日志配置),也可以拆开:
application.yamldatasource.yamllogback.xml
- 如果一个项目里有多份配置(如核心配置、数据库配置、日志配置),也可以拆开:
2.5.1 举例 电商平台
- Namespace:
dev(开发环境) - Group:
order-service - DataId:
application.yaml(通用配置)datasource.yaml(数据库配置)mq.yaml(消息队列配置)
同理,测试环境就是 Namespace 换成 test,生产环境换成 prod。

2.5.2 多项目大团队
-
Namespace:
prod(生产环境) -
Group:
projectAprojectB
-
DataId:
projectA-user-service.yamlprojectA-order-service.yamlprojectB-report-service.yaml
这样便于区分不同项目的配置,避免 DataId 重名。
2.5.3 代码示例



package com.beijing;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
/**
* 动态读取 Nacos 配置
*/
@RefreshScope
@Component
@ConfigurationProperties(prefix = "redis") // 对应 Nacos 配置里的 redis.*
public class NacosConfigReader {
private Integer key;
private Integer value;
public Integer getKey() {
return key;
}
public void setKey(Integer key) {
this.key = key;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}
3. 在bean里面使用配置
@RefreshScope动态感知


4. 如何配置以及大厂的使用demo
Spring Boot 多环境配置文件命名
application.yml ← 主配置(公共配置,所有环境共享)
application-dev.yml ← dev 环境专属
application-test.yml ← test 环境专属
application-prod.yml ← prod 环境专属
命名公式:application-{profile}.yml(或 .yaml / .properties)
application.yml → 真正公共的配置(应用名、日志格式、MyBatis等)
application-dev.yml → dev 的 Nacos 连接 + dev 业务配置
application-test.yml → test 的 Nacos 连接 + test 业务配置
application-prod.yml → prod 的 Nacos 连接 + prod 业务配置
标准写法:
application.yml(只放公共配置)
spring:
application:
name: user-service # 应用名,所有环境都一样
profiles:
active: dev # 默认激活 dev,部署时用命令行覆盖
# 公共配置:日志、MyBatis、Jackson 等所有环境都相同的
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
mybatis:
mapper-locations: classpath:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
application-dev.yml(dev 的 Nacos + 业务配置)
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: dev
group: ECOMMERCE_GROUP
config:
server-addr: localhost:8848
namespace: dev
group: ECOMMERCE_GROUP
file-extension: yaml
# dev 本地兜底配置(Nacos 上也可以配,这里做本地启动兜底)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/user_db_dev
username: root
password: 123456
logging:
level:
com.example: debug
application-prod.yml(prod 的 Nacos + 业务配置)
spring:
cloud:
nacos:
discovery:
server-addr: prod-nacos.example.com:8848
namespace: prod
group: ECOMMERCE_GROUP
username: ${NACOS_USERNAME} # 生产账号密码用环境变量注入
password: ${NACOS_PASSWORD}
config:
server-addr: prod-nacos.example.com:8848
namespace: prod
group: ECOMMERCE_GROUP
file-extension: yaml
username: ${NACOS_USERNAME}
password: ${NACOS_PASSWORD}
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://prod-mysql:3306/user_db
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
logging:
level:
com.example: warn
隔离强度:Namespace > Group > DataId


4.1 大厂标准的 Nacos 改造方案
一、整体架构规划


二、项目依赖配置
pom.xml 新增依赖
<!-- Nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos 服务注册发现(如果需要的话) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Spring Cloud 2022.x+ 必须引入,否则 bootstrap.yml 不生效 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

三、本地配置文件改造
- 新建 bootstrap.yml(核心,必须叫这个名字)
spring:
application:
name: knowledge-graph
profiles:
active: dev # 本地开发默认 dev,部署时用 --spring.profiles.active=sit 覆盖
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # Nacos 地址,不同环境可以不一样
namespace: ${spring.profiles.active} # 动态跟随 profile:dev/sit/uat
group: KG_GROUP
file-extension: yaml
refresh-enabled: true # 开启动态刷新
# 共享配置(可选,多个服务共用的配置)
shared-configs:
- data-id: common-log.yaml
group: COMMON_GROUP
refresh: true
# 服务注册发现(如果需要)
discovery:
server-addr: 127.0.0.1:8848
namespace: ${spring.profiles.active}
group: KG_GROUP
- 精简后的 application.yml(只留本地兜底)
# 本地兜底配置,Nacos 连不上时才用
server:
port: 8080
spring:
application:
name: knowledge-graph
logging:
level:
root: INFO
- 删除本地的 application-for-dev.yml 等
迁移到 Nacos 后,本地的application-for-dev.yml、application-for-sit.yml、application-for-uat.yml可以删掉,或者保留作为离线兜底。
四、Nacos 上的完整配置内容
配置 1:公共配置 knowledge-graph.yaml
三个环境完全一样的配置,每个 Namespace 下都建一份。
# ============================================================
# 知识图谱服务 - 公共配置(所有环境共享)
# DataId: knowledge-graph.yaml
# Group: KG_GROUP
# ============================================================
spring:
application:
name: knowledge-graph
mvc:
pathmatch:
matching-strategy: ant_path_matcher
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# Druid 连接池参数(所有环境一致)
initial-size: 5
min-idle: 10
max-active: 20
max-wait: 600000
connection-timeout: 30000
socket-timeout: 60000
time-between-eviction-runs-millis: 10000
min-evictable-idle-time-millis: 300000
max-evictable-idle-time-millis: 900000
validation-query: SELECT 1
test-while-idle: true
server:
port: 8080
address: 0.0.0.0
servlet:
context-path: /v1
logging:
level:
root: INFO
# Swagger / Knife4j
springdoc:
api-docs:
enabled: true
path: /v3/api-docs
swagger-ui:
enabled: true
path: /swagger-ui.html
default-flat-param-object: true
knife4j:
enable: true
# MyBatis Plus
mybatis-plus:
base-package: cn.ac.ict.knowledge.graph.dal
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: NONE
logic-delete-value: 1
logic-not-delete-value: 0
banner: false
type-aliases-package: cn.ac.ict.knowledge.graph.dal.dataobject
mapper-locations: classpath*:mapper/*.xml
# 静态资源
static-resource:
path: /root/why/static/
data-config-file-path: data-config/file/
# y2 外部接口(公共部分)
y2:
post:
path: /bdg-api/bdg-develop/v1/dataSearch/queryPostDataScroll
header:
name: Authentication
token:
path: /bdg-api/auth/cas/oauth2.0/accessToken
clientId: 1027980434144755712
user: xxx
password: xxx
header:
service: http://127.0.0.1
local: 1
ipPort: http://127.0.0.1:8989
# 数据导入
dataImport:
channel: 境外新闻网站
dataType: 发帖数据
maxSize: 1000
# 关系方向
relation:
direction: forwardly,reversely,bidirectional
# 数据配置文件
dataConfig:
fileRoot: /data-config/example/
example:
fileName: example_data.txt
# 定时任务(公共部分)
cron:
data-clean: 30
job:
switch: true
allow-multi-single-job: true
# Elasticsearch
es:
username: user
password: 123ewq@
# SA-Token 权限认证(公共部分)
sa-token:
is-auth: false
timeout: 2592000
is-concurrent: true
token-style: uuid
is-log: true
配置 2:dev 环境差异 knowledge-graph-dev.yaml
# ============================================================
# 知识图谱服务 - dev 环境配置
# DataId: knowledge-graph-dev.yaml
# Group: KG_GROUP
# Namespace: dev
# ============================================================
server:
ip: 1.1.1.1
spring:
datasource:
url: jdbc:mysql://1.1.1.1:13306/knowledge_graph?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: ict@123
structured:
log:
switch: 0
# 图谱检索接口
graph:
search:
exact: http://10.208.63.198:19999/api/v1/graph/search/extract/exact
fuzzy: http://10.208.63.198:19999/api/v1/graph/search/fuzzy
high: http://10.208.63.198:19999/api/v1/graph/search/high
taglist: http://10.208.63.198:19999/api/v1/graph/search/extract/taglist
edgelist: http://10.208.63.198:19999/api/v1/graph/search/extract/edgelist
listcontent: http://10.208.63.198:19999/api/v1/graph/search/listcontent
createMeta: http://10.208.63.198:19999/api/v1/graph/build/createMeta
insertData: http://10.208.63.198:19999/api/v1/graph/build/insert/byTask
graphStatic: http://10.208.63.198:19999/api/v1/graph/statistics
propertiesFilter: http://10.208.63.198:19999/api/v1/graph/search/properties_filter
tagProperties: http://10.208.63.198:19999/api/v1/graph/tag/properties
byVid: http://10.208.63.198:19999/api/v1/graph/extract/byVid
fullText: http://10.208.63.198:19999/api/v1/graph/fulltext
relationList: http://10.208.63.198:19999/api/v1/graph/relation/list
byRelation: http://10.208.63.198:19999/api/v1/graph/search/extract/byRelation
cronInsert: http://10.208.63.198:19999/api/v1/graph/cron/graph/insert
cronMetaUpdate: http://10.208.63.198:19999/api/v1/graph/cron/graph/meta/update
showSpace: http://10.208.63.198:19999/api/v1/graph/show/space
# 模型算法接口
model-algorithm:
restock: http://10.208.61.198:18727/api/v1/kgc/relation_completion/add_custom_rules
getCustomRules: http://10.208.61.198:18727/api/v1/kgc/relation_completion/get_custom_rules
deleteCustomRules: http://10.208.61.198:18727/api/v1/kgc/relation_completion/delete_custom_rules
execute: http://10.208.61.198:18727/api/v1/kgc/relation_completion/get_relation_completion
# y5 认证
y5_auth:
host: http://10.106.57.197:11093
clintId: 1027980434144755712
clintSecret: rdMeMDIwOTIwMjQxMzQ4MjAwODQ1iZ
getTokenUri: /sign/authz/oauth/v20/token
getUserInfoUri: /sign/api/oauth/v20/me
logoutUri: /sign/sp/logout
redirectUri: http://10.120.5.40:18090/authorize
getY5ServiceTokenURL: /maxkey-mgt-api/sys/getTokenByOnlineTicket
y5MenuURL: /maxkey-mgt-api/apps/userSchedules/jsondata
getServiceTokenByOnlineTicket: /maxkey-mgt-api/sys/getTokenByOnlineTicket
validate-online-ticket: /sign/onlineticket/validate
callbackUri: https://kg.y.sit.4.cn/authorize
logUri: https://auth.y.sit.4.cn/login
# 日志采集
collect-logs:
host: http://1.1.1.1:19526
collect: /maxkey-mgt-api/log/monitor/collect
enabled: false
# 自定义配置
custom-config:
config:
front:
url: https://qq.y.sit.4.cn
id: 1027980434144755712
# 模型服务
model-service:
host: http://test2.mlops.ac.cn:30800
tmp-host: http://mlops.ac.cn:30800
get-model-list: /api/v1/serving/services/getAllServiceByUserName
# 定时任务(环境差异)
cron:
poll-job: false
# 融合服务
fusion:
callback: http://1.1.1.1:18080/v1/fusion/task/status/update
create:
task: http://1.1.1.1:18655/api/v1/fusion/tasks
# 用户资源
user-resource:
host: https://qq.y.sit.4.cn
path: /maxkey-mgt-api/permissions/resources/v2/currentUserTree
# SA-Token(环境差异)
sa-token:
token-name: Token
is-read-cookie: true
配置 3:sit 环境差异 knowledge-graph-sit.yaml
# ============================================================
# 知识图谱服务 - sit 环境配置
# DataId: knowledge-graph-sit.yaml
# Group: KG_GROUP
# Namespace: sit
# ============================================================
server:
ip: 172.23.2.41
spring:
datasource:
url: jdbc:mysql://172.23.2.41:13306/knowledge_graph?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: ict@123
graph:
search:
exact: http://172.23.2.41:36047/api/v1/search/exact_search
fuzzy: http://172.23.2.41:36047/api/v1/search/fuzzy_search
high: http://172.23.2.41:36047/api/v1/search/high_search
taglist: http://172.23.2.41:36047/api/v1/search/taglist_search
edgelist: http://172.23.2.41:36047/api/v1/search/edgelist_search
listcontent: http://172.23.2.41:36047/api/v1/search/listcontent_search
createMeta: http://172.23.2.41:19999/api/v1/graph/build/createMeta
insertData: http://172.23.2.41:19999/api/v1/graph/build/insert/byTask
graphStatic: http://172.23.2.41:19999/api/v1/graph/statistics
propertiesFilter: http://172.23.2.41:19999/api/v1/graph/search/properties_filter
tagProperties: http://172.23.2.41:19999/api/v1/graph/tag/properties
byVid: http://172.23.2.41:19999/api/v1/graph/extract/byVid
fullText: http://172.23.2.41:19999/api/v1/graph/fulltext
edgeList: http://172.23.2.41:19999/api/v1/graph/relation/list
byRelation: http://172.23.2.41:19999/api/v1/graph/search/extract/byRelation
cronInsert: http://172.23.2.41:19999/api/v1/graph/cron/graph/insert
cronMetaUpdate: http://172.23.2.41:19999/api/v1/graph/cron/graph/meta/update
showSpace: http://172.23.2.41:19999/api/v1/graph/show/space
model-algorithm:
restock: http://172.23.2.41:18727/api/v1/kgc/relation_completion/add_custom_rules
getCustomRules: http://172.23.2.41:18727/api/v1/kgc/relation_completion/get_custom_rules
deleteCustomRules: http://172.23.2.41:18727/api/v1/kgc/relation_completion/delete_custom_rules
execute: http://172.23.2.41:18727/api/v1/kgc/relation_completion/get_relation_completion
y5_auth:
host: http://auth.y.sit.4.cn
clintId: 1027980434144755712
clintSecret: rdMeMDIwOTIwMjQxMzQ4MjAwODQ1iZ
getTokenUri: /sign/authz/oauth/v20/token
getUserInfoUri: /sign/api/oauth/v20/me
logoutUri: /sign/sp/logout
redirectUri: https://kg.y.sit.4.cn/authorize
getY5ServiceTokenURL: /maxkey-mgt-api/sys/getTokenByOnlineTicket
y5MenuURL: /maxkey-mgt-api/apps/userSchedules/jsondata
getServiceTokenByOnlineTicket: /maxkey-mgt-api/sys/getTokenByOnlineTicket
validate-online-ticket: /sign/onlineticket/validate
callbackUri: https://kg.y.sit.4.cn/authorize
logUri: https://auth.y.sit.4.cn/login
collect-logs:
host: https://gw.y.sit.4.cn
collect: /maxkey-mgt-api/log/monitor/collect
enabled: true
custom-config:
config:
front:
url: https://auth.y.sit.4.cn
id: 1027980434144755712
model-service:
host: http://gw.y.uat.4.cn:443
tmp-host: http://mlops.ac.cn:30800
get-model-list: /api/v1/serving/services/getAllServiceByUserName
cron:
poll-job: true
fusion:
callback: http://172.23.2.41:18080/v1/fusion/task/status/update
create:
task: http://10.60.1.76:18655/api/v1/fusion/tasks
user-resource:
host: gw.y.sit.4.cn
path: /maxkey-mgt-api/permissions/resources/v2/currentUserTree
sa-token:
token-name: token
is-read-cookie: false
其他省略!!!
五、代码中读取配置(推荐写法)
配置里有大量的 URL 和复杂对象,强烈建议用 @ConfigurationProperties 绑定,不要到处写 @Value。
@ConfigurationProperties 默认支持 Nacos 动态刷新,不需要加 @RefreshScope。
如果用 @Value,则需要在类上加 @RefreshScope 才能动态刷新。
- 图谱检索配置类
package cn.ac.ict.knowledge.graph.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "graph.search")
public class GraphSearchProperties {
private String exact;
private String fuzzy;
private String high;
private String taglist;
private String edgelist;
private String listcontent;
private String createMeta;
private String insertData;
private String graphStatic;
private String propertiesFilter;
private String tagProperties;
private String byVid;
private String fullText;
private String relationList;
private String byRelation;
private String cronInsert;
private String cronMetaUpdate;
private String showSpace;
}
都是这么写的,其他省略!!!
六、Nacos 控制台操作步骤
1. 登录 Nacos 控制台 → 命名空间 → 新建三个命名空间:
- 名称:dev,ID:dev
- 名称:sit,ID:sit
- 名称:uat,ID:uat
2. 切换到 dev 命名空间 → 配置管理 → 配置列表 → 新建配置:
- DataId: knowledge-graph.yaml
- Group: KG_GROUP
- 配置格式:YAML
- 配置内容:粘贴上面「公共配置」内容
- 点击发布
3. 再新建配置:
- DataId: knowledge-graph-dev.yaml
- Group: KG_GROUP
- 配置内容:粘贴上面「dev 环境差异」内容
- 点击发布
4. 切换到 sit 命名空间,重复步骤 2-3:
- knowledge-graph.yaml(公共配置,内容一样)
- knowledge-graph-sit.yaml(sit 环境差异)
5. 切换到 uat 命名空间,重复步骤 2-3:
- knowledge-graph.yaml(公共配置)
- knowledge-graph-uat.yaml(uat 环境差异)
七、启动验证

knowledge-graph/
└── src/main/resources/
├── bootstrap.yml ← Nacos 连接信息(新增)
└── application.yml ← 精简后的本地兜底(原内容大部分搬到 Nacos)
更多推荐


所有评论(0)