建二手车网站,唐山百度提升优化,网店出售,中小型企业网站的设计与开发SpringCloudAlibaba Nacos配置中心
在java代码中或者在配置文件中写配置#xff0c;是最不雅的#xff0c;意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中#xff0c;每次修改了配置后只需要重启一次服务即可。话不多说#xff0c;直接干货拉…SpringCloudAlibaba Nacos配置中心
在java代码中或者在配置文件中写配置是最不雅的意味着每次修改配置都需要重新打包或者替换class文件。若放在远程的配置文件中每次修改了配置后只需要重启一次服务即可。话不多说直接干货拉满。
集成nacos配置中心
首先引入配置相关的依赖
!--Nacos 配置中心依赖--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency
!--bootstrap的依赖由于SpringCloud2020版本上bootstrap被默认禁用了所以要引入才能使用--
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId
/dependency其次保证项目启动时配置先从nacos配置中心获取所以配置都写在bootstrap.yml或bootstrap.properties中即可。bootstrap的文件比application的优先级要高。配置详情如下
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式nacos中的DataId配置 DataId主要是使当前项目快速进行多套配置内容的切换看看DataId的组成格式
${prefix}-${spring.profiles.active}.${file-extension}
prefix:项目的服务名也就是spirng.application.name的值spring.profiles.active:当前的环境file-extension:文件后缀
当spring.profiles.active为空时对应的’-连接符也将会不存在DataId的格式就是变换为${prefix}.${file-extension}
设置profiles为dev
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式profiles:active: dev那么我们的文件名就应该为consumer-dev.yml我们需要在nacos上创建配置先创建consumer-dev.yml和consumer-prod.yml文件 通过代码获取这个配置然后通过调整环境注意它们的配置返回。
RestController// RestController注解是ControllerResponseBody
RefreshScope //通过 Spring Cloud 原生注解 RefreshScope 实现配置自动更新
public class ConfigController {Value(${custom.info})// 注解获取custom.info配置的值private String config;RequestMapping(/getConfig)public String getConfig() { // 获取配置的接口return config;}
}调用查看结果
D:\springcloud\doccurl localhost:9001/getConfig
nacos config dev切换为prod环境重启项目再次调用
spring:profiles:active: prodD:\springcloud\doccurl localhost:9001/getConfig
nacos config prod莫得问题~
Nacos的Group配置
group是分组的意思表示配置内容归于哪个组默认的是DEFAULT_GROUP组如创建配置文件时声明一个CONSUMER_GROUP java代码配置
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式group: CONSUMER_GROUP # 指定某GROUPprofiles:active: dev重启调用
D:\springcloud\doccurl localhost:9001/getConfig
nacos config dev CONSUMER_GROUPnacos的Namespace配置
namespace表示命名空间比较粗粒度的控制。默认的namespace是public当创建新的命名空间时如果要指定此命名空间则需要在java配置中声明它的namespace的id值 如上图创建了一个命名空间在namespace中创建consumer-dev.yml的配置文件 在java配置中namespace是填写的ID值而不是名称
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式namespace: e6d5450d-a8d3-45c4-9801-091586082104 # 命名空间的id值profiles:active: devNacos的持久化
Nacos默认的是使用嵌入式数据库Derby数据库也就表明越到后面越容易出现瓶颈如存储容量限制不方便数据查询、存储优化等等。Nacos支持使用mysql做数据持久化版本要求mysql在5.6.5 mysql数据持久化 在mysql中创建一个数据库并且导入nacos-mysql.sql的文件路径是/conf/nacos-mysql.sql 在Nacos的conf/application.properties文件中添加mysql数据源支持
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platformmysql # 添加mysql数据源### Count of DB:
db.num1### Connect URL of DB:
db.url.0jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicodetrueuseSSLfalseserverTimezoneUTC
db.user.0root # 数据库账号
db.password.0123456 # 密码重启下nacos登录进入后发现我们刚刚测试的那些数据都不在了这就是不做持久化的问题。
现在已经将数据的持久化加上了我们像刚刚一样随便添加几个数据然后再次重启nacos看看数据有没有丢失。 server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式profiles:active: dev调试
D:\springcloud\doccurl localhost:9001/getConfig
nacos config dev重启nacos可以看到我们的数据都还在 nacos的配置扩展
除了通过${prefix}-${spring.profiles.active}.${file-extension}的方式指定我们的配置文件我们还可以直接通过dataId配置指定nacos上的一些共享配置
如创建了一个redis的共享配置 在java项目中不仅要读取consumer-dev.yml还要读取redis.yml的配置可以使用extension-configs来声明
server:port: 9001
spring:application:name: consumer # 应用名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址config:server-addr: localhost:8848 # nacos地址file-extension: yml # 指定配置内容的数据格式extension-configs:-dataId: redis.ymlgroup: DEFAULT_GROUPrefresh: trueprofiles:active: devextension-configs是一个数组extension-configs中若有多个配置时
extension-configs:-dataId: redis.ymlgroup: DEFAULT_GROUPrefresh: true-dataId: rabbitmq.ymlgroup: DEFAULT_GROUPrefresh: true