首先从GitHub去找文档Nacos主要资源配置项
application.properties(主要配置)汉化部分如下:
# *************** Spring Boot相关配置***************#
# ##默认的Web上下文路径:
server.servlet.contextPath = / nacos
# ##默认的Web服务器端口:
server.port = 8848
# ***************网络相关配置***************#
# ##如果喜欢主机的IP在cluster.conf中NACOS服务器地址:
# nacos.inetutils.prefer-hostname-over-ip = false
# ##指定本地服务器的IP:
# nacos.inetutils.ip-address =
# ***************配置模块相关配置***************#
# ##如果使用MySQL作为数据源:
# spring.datasource.platform = mysql
# ##计数DB的:
# db.num = 1
# ## DB的连接网址:
# db.url.0 = jdbc:mysql://127.0.0.1:3306 / nacos?characterEncoding = utf8&connectTimeout = 1000&socketTimeout = 3000&autoReconnect = true&useUnicode = true&useSSL = false&serverTimezone = UTC
# db.user.0 = nacos
# db.password.0 = nacos
# ##连接池配置:hikariCP
db.pool.config.connectionTimeout = 30000
db.pool.config.validationTimeout = 10000
db.pool.config.maximumPoolSize = 20
db.pool.config.minimumIdle = 2
# ***************命名模块相关配置***************#
# ##数据调度任务执行周期(毫秒):
# nacos.naming.distro.taskDispatchPeriod = 200
# ##数据计数批量同步任务:
# nacos.naming.distro.batchSyncKeyCount = 1000
# ##重试毫秒的延迟,如果同步任务失败:
# nacos.naming.distro.syncRetryDelay = 5000
# ##如果启用数据热身。如果设置为false,则服务器将接受请求而无需本地数据准备:
# nacos.naming.data.warmup = true
# ##如果启用自动实例到期,有点像实例的健康检查:
# nacos.naming.expireInstance = true
nacos.naming.empty-service.auto-clean = true
nacos.naming.empty-service.clean.initial-delay-ms = 50000
nacos.naming.empty-service.clean.period-time-ms = 30000
# *************** CMDB模块相关配置***************#
# ##的间隔转储外部CMDB以秒:
# nacos.cmdb.dumpTaskInterval = 3600
# ##轮询数据改变事件的以秒为单位的时间间隔:
# nacos.cmdb.eventTaskInterval = 10
# ##装入标签的以秒为单位的时间间隔:
# nacos.cmdb.labelTaskInterval = 300
# ##如果反过来对数据加载任务:
# nacos.cmdb.loadDataAtStart = false
# ***************指标相关配置***************#
# ##度量普罗米修斯
# management.endpoints.web.exposure.include = *
# ##度量弹性搜索
management.metrics.export.elastic.enabled = false
# management.metrics.export.elastic.host = http:// localhost:9200
# ##度量的涌入
management.metrics.export.influx.enabled =false
# management.metrics.export.influx.db = springboot
# management.metrics.export.influx.uri = http:// localhost:8086
# management.metrics.export.influx.auto-create-db = true
# management.metrics.export.influx.consistency =一个
# management.metrics.export.influx.compressed = true
# ***************访问日志相关配置***************#
# ##如果开启存取日志:
server.tomcat.accesslog.enabled = true
# ##访问日志模式:
server.tomcat.accesslog.pattern = %h%l%u%t“%r”%s%b%D%{User-Agent} i%{Request-Source} i
# ##访问日志的目录:
server.tomcat.basedir =
# ***************访问控制相关配置***************#
# ##如果启用Spring Security的,这个选项被弃用1.2.0:
# spring.security.enabled = false
# ##忽略AUTH的网址,在1.2.0被弃用:
nacos.security.ignore.urls = /,/错误,/ ** / * 。css,/ ** / * 。js,/ ** / * 。html,/ ** / * 。map,/ ** / * .svg,/ ** / *。png,/ ** / *。ico,/ console-ui / public / **,/ v1 / auth / **,/ v1 / console / health / **,/ actuator / **,/ v1 /控制台/服务器/ **
# ##认证系统,目前只有“NACOS”支持:
nacos.core.auth.system.type = nacos
# ##是否打开认证系统:
nacos.core.auth.enabled =false
# ##令牌过期以秒为单位:
nacos.core.auth.default.token.expire.seconds = 18000
# ##nacos默认令牌(token):
nacos.core.auth.default.token.secret.key = SecretKey012345678901234567890123456789012345678901234567890123456789
# ##开启/关闭的的认证信息缓存。通过打开此开关,认证信息的更新将有15秒的延迟。
nacos.core.auth.caching.enabled = true
# ##从1.4.1开始,开启/关闭 认证用户代理:NACOS服务器,只有从旧版本升级。
nacos.core.auth.enable.userAgentAuthWhite = true
# ##从1.4.1开始,工作时,nacos.core.auth.enabled = true,nacos.core.auth.enable.userAgentAuthWhite =false。
# ##可以通过配置以下属性实现白名单认证,以及甚至可以让其他服务器请求。
nacos.core.auth.server.identity.key =
nacos.core.auth.server.identity.value =
# *************** Istio相关配置***************#
# ##如果反过来的MCP服务器上:
nacos.istio.mcp.server.enabled =false
# ## ***************添加从1.3.0 *************** ###
# ***************核心相关配置***************#
# ##手动设定WorkerID
# nacos.core.snowflake.worker-id =
# ##会员的元数据
# nacos.core.member.meta.site =
# nacos.core.member.meta.adweight =
# nacos.core.member.meta.weight =
# ## MemberLookup
# ##寻址模式分类,如果设置,优先级最高
# nacos.core.member.lookup.type = [文件,地址服务器]
##使用配置文件或命令行参数设置集群列表
# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101? raft_port=8808,192.168.16.101:8849?raft_port=8809
##为AddressServerMemberLookup
#初始化时查询地址服务器的最大重试次数
# nacos.core.address-server.retry = 5
## [域名服务器]模式的服务器域名地址
# address.server.domain = jmenv.tbsite.net
## [地址服务器]模式的服务器端口
# address.server.port = 8080
## [地址服务器]模式的请求地址
# address.server.url = / nacos /服务器列表
# *************** JRaft相关配置***************#
# ##设置筏集群选超时,默认值为5秒
# nacos.core.protocol.raft.data.election_timeout_ms = 5000
# ##设置的时间的筏快照将周期性地执行该量,默认为30分钟
# nacos.core.protocol.raft.data.snapshot_interval_secs = 30
# ##筏内部工作线程
# nacos.core.protocol.raft.data.core_thread_num = 8
# ##线程数所需的木筏业务请求处理
# nacos.core.protocol.raft.data.cli_service_thread_num = 4
# ##集群线性读取策略。默认情下,使用安全的线性读取,即,领导者的任职通过心跳确认
# nacos.core.protocol.raft.data.read_index_type = ReadOnlySafe
# ## RPC请求超时,默认5秒
# nacos.core.protocol.raft.data.rpc_request_timeout_ms = 5000
集群配置官方开源文档
#it is ip
#example
#集群配置示例
192.168.16.101:8847
192.168.16.102
192.168.16.103
nacos-mysql.sql (配置中心数据库)如果你没有配置数据库,但是有网它就能用,内网就需要配置否则不能启动。有网是因为你连接的官方的默认配置中心。还有nacos启动就炸的原因下面也有,我将会提及它们。下面sql语句直接复制到文本改后缀.sql执行脚本到数据库就行。
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256) DEFAULT NULL,
`c_use` varchar(64) DEFAULT NULL,
`effect` varchar(64) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`c_schema` text,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_aggr */
/******************************************/
CREATE TABLE `config_info_aggr` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) NOT NULL COMMENT 'group_id',
`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
`content` longtext NOT NULL COMMENT '内容',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_beta */
/******************************************/
CREATE TABLE `config_info_beta` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info_tag */
/******************************************/
CREATE TABLE `config_info_tag` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_tags_relation */
/******************************************/
CREATE TABLE `config_tags_relation` (
`id` bigint(20) NOT NULL COMMENT 'id',
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
`nid` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`nid`),
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = group_capacity */
/******************************************/
CREATE TABLE `group_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = his_config_info */
/******************************************/
CREATE TABLE `his_config_info` (
`id` bigint(64) unsigned NOT NULL,
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`data_id` varchar(255) NOT NULL,
`group_id` varchar(128) NOT NULL,
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
`content` longtext NOT NULL,
`md5` varchar(32) DEFAULT NULL,
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`src_user` text,
`src_ip` varchar(50) DEFAULT NULL,
`op_type` char(10) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
PRIMARY KEY (`nid`),
KEY `idx_gmt_create` (`gmt_create`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = tenant_capacity */
/******************************************/
CREATE TABLE `tenant_capacity` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`kp` varchar(128) NOT NULL COMMENT 'kp',
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (
`username` varchar(50) NOT NULL PRIMARY KEY,
`password` varchar(500) NOT NULL,
`enabled` boolean NOT NULL
);
CREATE TABLE `roles` (
`username` varchar(50) NOT NULL,
`role` varchar(50) NOT NULL,
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL,
`resource` varchar(255) NOT NULL,
`action` varchar(8) NOT NULL,
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
上方SQL脚本执行完如下图:
它会建立一个叫Nacos_Config的数据库当然你也可以改.
上方我们说到Nacos启动就炸是因为他默认启动参数占内存比较大,如果你没有修改它会占满默认内存参数,初始化参数没记错的话貌似是1个G,你内存条只分配了4G他都会占满,貌似它最大内存是2个G还是8个G来着忘记了。
废话太多,先看看我们需要了解的几个参数,这几个参数如果你学过Jvm优化你一定知道。
- -Xms:初始堆大小
- -Xmx:最大堆大小
- -Xmn:新生代大小
- -XX:NewRatio:设置新生代和老年代的比值。如:为3,表示年轻代与老年代比值为1:3
- -XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5
- -XX:MaxTenuringThreshold:设置转入老年代的存活次数。如果是0,则直接跳过新生代进入老年代
- -XX:PermSize、-XX:MaxPermSize:分别设置永久代最小大小与最大大小(Java8以前)
- -XX:MetaspaceSize、-XX:MaxMetaspaceSize:分别设置元空间最小大小与最大大小(Java8以后)
输入 cd nacos/bin
然后输入vi startup.sh 或者vim都行
我们就可以看到nacos在jvm中的配置
上图就是我个人使用修改后的参数,那么多够了,具体看自己,温馨提示初始化不能大于占最大内存参数,具体按我上面配置介绍的来就行了。如果有什么更好的方案或者修正都可以留言,谢谢。
配置好nacos以后,sh startup.sh启动就行了(补充:sh startup.sh -m standalone 单例模式启动,这样启动就不会加载集群配置,当然集群配置当前主机也是可行的。),然后可以看到Nacos控制面板。地址是你的IP,默认端口8848,账户和密码好像是nacos.
进入正轨,创建一个Maven项目
接下来配置pom项目模型也就是pom.xml
我考虑了一下大多数的开发团队都使用springboot开发,本次nacos配置中心咱们也用springboot2.1.0
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.staryang</groupId>
<artifactId>MyNacosTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos-config-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-actuator</artifactId>
<version>${nacos-config-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
springboot启动就会加载application.properties,所以必须写上nacos配置中心参数。官方示例请走这点这
Nacos命名空间介绍:
为啥叫命名空间,其实顾名思义,起个名字的的空间就是命名空间,这相当于废话,当我没说,你可以把它当作一个你看的懂的自定义名字的文件夹,放你想放的东西,或者你知道的东西,当它搬上Java的舞台就相当于你项目所需配置文件存放的一个文件夹,方便整理又整洁,很多人问这有什么用,你想想我们项目中是不是有开发环境,测试环境,内测环境,上线环境等等。这么一想是不是方便很多。
如果你设置了命名空间,配置文件加上这个nacos.config.namespace,
如果没设置默认的public,就不用加这个。
在这提示一下,springboot使用nacos配置中心目前只能读取properties配置文件,因为nacos依赖中配置参数目前不支持指定配置文件后缀,springcloud就行,不要问为啥,我已经试过了,springboot配置文件中指定nacos远程配置后缀指定不了。依赖版本为0.2.1,我去源码nacos.config中没有看见能指定配置文件类型的参数。听说读取上下文可以,不过要自己写代码获取,有兴趣你可以去试试。
application.properties配置详情
nacos.config.server-addr=192.168.31.88:8848
**# endpoint http://localhost:8080/actuator/nacos-config
**# health http://localhost:8080/actuator/health****
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
springbootapplication(springboot核心启动类配置)
@SpringBootApplication
@NacosPropertySource(dataId = "MyNacosConfigCenter",groupId = "MY_First",autoRefreshed = true)
public class MyNacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(MyNacosConfigApplication.class,args);
}
}
@NacosPropertySource(dataId = "MyNacosConfigCenter",groupId = "MY_First",autoRefreshed = true)
dataId 对应 nacos中的dataId
groupId 同上对应 nacos中的groupId
autoRefreshed 自动刷新
然后写一个controller测试
@RestController
@RequestMapping("/Nacos")
public class NacosConfigTestConfigController {
/*${配置文件中参数:默认值}*/
@NacosValue(value = "${spring.redis.port:false}", autoRefreshed = true)
private String myport;
@GetMapping("/Hello")
public String SayHelloWord(){
return myport;
}
}
踩了一些坑,网传垃圾,首先告诉你spring.application.name无需指定为dataID,这个是一个坑。
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)。${useLocalCache:false}
这个后面为啥:false,是因为当你连接不上nacos配置时默认使用的参数。当你连接上Nacos配置中心时这个参数会发生变化。
很多人在这会去用spring框架的@value
,有些人说有用,有些人说没用,如果你能用我不推荐使用,因为它缺少autoRefreshed自动刷新这个参数。建议使用官方的@NacosValue
.
当你看完这个说明你已经会了,而且springcloud更舒服。
springcloud指定配置后缀file-extension=yml
最后来一波远程配置中心获取redis配置,再从redis拉取数据。
代码展示:
@RestController
@RequestMapping("/Nacos")
public class NacosConfigTestConfigController {
@Autowired
private StringRedisTemplate redisTemplate;
@GetMapping("/Hello")
public String SayHelloWord(){
return this.redisTemplate.opsForValue().get("mynacos");
}
}
重启项目访问
有兴趣点点关注,互相讨论,你我共同进步。有疑问,发楼下,会经常看。
最后补充:springboot版本为2.1.x版本,那么nacos配置中心起步依赖为0.2.1。同理可得,为什么这样可以有空看看官方文档。说白了,官方就是这么说的。