项目模块:
前期规划,实现部分
java_wxid ├── demo // 演示模块 │ └── 模块名称:apache-mybatis-demo模块 //Apache Mybatis集成(已实现并有博文总结) │ └── 模块名称:apache-shardingsphere-demo模块 //Apache ShardingSphere集成(已实现并有博文总结) │ └── 模块名称:design-demo模块 //设计模式实战落地(已实现并有博文总结) │ └── 模块名称:elasticsearch-demo模块 //ElasticSearch集成(已实现并有博文总结) │ └── 模块名称:mongodb-demo模块 //MongoDB集成(已实现并有博文总结) │ └── 模块名称:redis-demo模块 //Redis集成(已实现并有博文总结) │ └── 模块名称:spring-boot-demo模块 //Spring Boot快速构建应用(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-nacos-demo模块 //Spring Cloud Alibaba Nacos集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-seata-demo模块 //Spring Cloud Alibaba Seata集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-sentinel-demo模块 //Spring Cloud Alibaba Sentinel集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-gateway-demo模块 //Spring Cloud Gateway集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-hystrix-demo模块 //Spring Cloud Hystrix集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-open-feign-demo模块 //Spring Cloud Open Feign集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-ribbon-demo模块 //Spring Cloud Ribbon集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-security-oauth2-demo模块 //Spring Cloud Security Oauth2集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-security-oauth2-sso-client-demo模块 //Spring Cloud Security Oauth2集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-skywalking-demo模块 //Spring Cloud Skywalking集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-stream-demo模块 //Spring Cloud Stream集成(已实现并有博文总结) │ └── 模块名称:swagger-demo模块 //springfox-swagger2集成(已实现并有博文总结) │ └── 模块名称:xxl-job模块 //xxl-job集成(已实现并有博文总结) │ └── 模块名称:apache-spark-demo模块 //Apache Spark集成 │ └── 模块名称:etl-hdfs-hive-hbase-demo模块 //ETL、HDFS、Hive、Hbase集成 │ └── 模块名称:ddd-mode-demo模块 //DDD领域设计 │ └── 模块名称:netty-demo模块 //Netty集成 │ └── 模块名称:vue-demo模块 //前端vue集成 ├── document // 文档 │ └── JavaKnowledgeDocument //java知识点 │ └── java基础知识点.md │ └── mq知识点.md │ └── mysql知识点.md │ └── redis知识点.md │ └── springcould知识点.md │ └── spring知识点.md │ └── FounderDocument //创始人 │ └── 创始人.md
系列文章:快速集成各种微服务相关的技术,帮助大家可以快速集成到自己的项目中,节约开发时间。
提示:系列文章还未全部完成,后续的文章,会慢慢补充进去的。
文章目录
安装宝塔面板
安装mysql
安装redis(非必选)
安装docker
安装nacos
配置nacos
创建命名空间
创建配置文件nacos-config-dev.yaml
创建spring-cloud-alibaba-nacos-demo项目
创建一个springboot的项目,然后修改pom.xml
创建bootstrap.yml文件
修改启动类SpringCloudAlibabaNacosDemoApplication
启动项目开始校验
集成nacos需要先准备好nacos,这里从零开始搭建,首先准备好一台云服务器,我这里选择的是阿里云的CentOS 7.2 64位,然后开放安全组的指定端口,然后使用宝塔面板快速安装mysql,docker,使用docker容器快速安装nacos,最后创建项目进行测试nacos动态更新配置是否成功。
代码地址:https://gitee.com/java_wxid/java_wxid/tree/master/demo/spring-cloud-alibaba-nacos-demo
安装宝塔面板
去宝塔面板填写服务器ip和登录密码
如下(示例):
宝塔面板地址:https://www.bt.cn/new/download.html
选择仅安装宝塔面板,安装好之后会有一个链接和账户
面板地址:http://ip:端口/xxxxxx
用户名:xxxxx
密码:xxxxx
然后绑定手机号
安装mysql
由于nacos需要用到数据库,这里我需要提前安装好mysql,软件商店选择安装mysql
安全左侧栏目开放端口(一般需要修改默认端口,这里做演示就不改了)
如下(示例):
如果需要在宝塔面板里面链接mysql执行sql需要安装phpMyAdmin
如下(示例):
但是安装phpMyAdmin前还需要安装nginx和php-7.1|php-7.2|php-7.3|php-7.1|php-7.4|php-8.0|php-8.1|,安装完成之后就可以测试连接了
如下(示例):
如果root账号远程是报错,进入宝塔安装的phpmyadmin数据库界面,执行以下命令,重启mysql.
代码如下(示例):
#方法一:直接给root授予最大权限 # 授权root用户对所有数据库在任何ip都可以进行操作 grant all on *.* to root@'%' identified by '123456' with grant option; # 刷新数据库 flush privileges; #方法二:新建一个用户并授予最大权限 # 新建并授权jim用户对所有数据库在任何ip都可以进行操作 grant all on *.* to liaozhiwei@'%' identified by '123456' with grant option; # 刷新数据库 flush privileges;
“root、liaozhiwei”是用户账号名;“123456”是mysql连接密码;“all”是指全部权限;“%指的是任何ip”,也可以把%替换成对应远程的ip地址
如果还是连接报错需要检查云服务器安全组端口是不是没开放
安装redis(非必选)
安装配置nacos和redis没有关系,这里为了后面项目可以用到redis,提前做好了安装配置,在软件商店搜索redis,点击安装,并且在首页显示方便修改配置
如下(示例):
去首页点击redis
如下(示例):
如下(示例):
然后重载配置,重启redis
检查云服务器安全组端口是否开发,就可以测试连接了
如下(示例):
安装docker
可以在左侧的Docker栏目安装docker
如下(示例):
安装nacos
代码如下(示例):
#搜索可以使用的镜像 docker search nacos #拉取镜像 docker pull nacos/nacos-server #推荐使用这种方式,可以连接自己的数据库 docker run --restart always -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \ --name nacos \ --env MODE=standalone \ --env SPRING_DATASOURCE_PLATFORM=mysql \ --env MYSQL_SERVICE_HOST=106.14.132.94 \ --env MYSQL_SERVICE_PORT=3306 \ --env MYSQL_SERVICE_DB_NAME=nacos \ --env MYSQL_SERVICE_USER=root \ --env MYSQL_SERVICE_PASSWORD=JHWLXeT56iJiBwDG \ nacos/nacos-server:latest
在数据库里面创建nacos库,把sql导入,sql地址:
https://github.com/alibaba/nacos/edit/develop/config/src/main/resources/META-INF/nacos-db.sql
或者使用我这里的sql
/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /******************************************/ /* 数据库全名 = 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(128) DEFAULT NULL, `content` LONGTEXT NOT NULL COMMENT 'content', `md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5', `gmt_create` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` TEXT COMMENT 'source user', `src_ip` VARCHAR(20) 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, `encrypted_data_key` TEXT NOT NULL COMMENT '秘钥', 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(128) 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` TEXT COMMENT 'source user', `src_ip` VARCHAR(20) DEFAULT NULL COMMENT 'source ip', `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段', `encrypted_data_key` TEXT NOT NULL 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', `src_user` TEXT COMMENT 'source user', `src_ip` VARCHAR(20) 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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 '2010-05-05 00:00:00', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00', `src_user` TEXT, `src_ip` VARCHAR(20) DEFAULT NULL, `op_type` CHAR(10) DEFAULT NULL, `tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段', `encrypted_data_key` TEXT NOT NULL 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 '2010-05-05 00:00:00' COMMENT '创建时间', `gmt_modified` DATETIME NOT NULL DEFAULT '2010-05-05 00:00:00' 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, CONSTRAINT uk_username_role UNIQUE (username,role) ); CREATE TABLE permissions ( role VARCHAR(50) NOT NULL, resource VARCHAR(512) NOT NULL, ACTION VARCHAR(8) NOT NULL, CONSTRAINT uk_role_permission UNIQUE (role,resource,ACTION) ); INSERT INTO users (username, PASSWORD, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
访问地址 默认账号密码是nacos/nacos(一般会删除,重新创建新用户)
http://ip:8848/nacos
配置nacos
创建命名空间
如下(示例):
创建配置文件nacos-config-dev.yaml
如下(示例):
填写内容:
内容如下(示例):
user: name: liaozhiwei age: 25
如下(示例):
创建spring-cloud-alibaba-nacos-demo项目
项目代码:https://gitee.com/java_wxid/java_wxid/tree/master/demo/spring-cloud-alibaba-nacos-demo
项目结构如下(示例):
创建一个springboot的项目,然后修改pom.xml
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>spring-cloud-alibaba-nacos-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-cloud-alibaba-nacos-demo</name> <description>Demo project for Spring Boot</description> <!-- 属性配置--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <!--引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。 在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系--> <spring.boot.version>2.3.12.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 代表web模块,在这个模块中含了许多JAR包,有spring相关的jar,内置tomcat服务器,jackson等,这些web项目中常用的的功能都会自动引入--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Alibaba Nacos 在服务注册中心实现服务的注册与发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- Alibaba Nacos 在配置中心实现配置的动态刷新 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- 在SpringBoot 2.4.x的版本之后,对于bootstrap.properties/bootstrap.yaml配置文件 (我们合起来成为Bootstrap配置文件)的支持,其实这个jar包里什么都没有,就只有一个标识类Marker, 用来标识要开启Bootstrap配置文件的支持,由于父类用了2.5.6版本需要导入如下的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.0</version> </dependency> </dependencies> <!-- 引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。 在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> </plugins> </build> </project>
创建bootstrap.yml文件
代码如下(示例):
#bootstrap.yml优先级比application.yml优先级高 spring: #prefix−{spring.profile.active}.${file-extension} #nacos会根据当前环境去拼接配置名称查找相应配置文件, #示例:{spring.application.name}-{spring.profiles.active}-{spring.cloud.nacos.config.file-extension} #获取到值:nacos-autoconfig-service-dev.yml profiles: #开发环境dev,测试环境test,生产环境prod active: dev application: #配置应用的名称,用于获取配置 name: nacos-config cloud: nacos: discovery: # 服务注册地址 server-addr: ip:8848 config: #nacos配置中心地址 server-addr: ip:8848 #配置中心的命名空间id namespace: 9e50b6d9-6c3d-4e7a-b701-10f085e4b98d #配置分组,默认没有也可以 group: DEFAULT_GROUP #配置文件后缀,用于拼接配置配置文件名称,目前只支持yaml和properties file-extension: yaml #配置自动刷新 refresh-enabled: true #配置文件的前缀,默认是application.name的值,如果配了prefix,就取prefix的值 #prefix: nacos-autoconfig-service-${spring.profile.active} # 配置编码 encode: UTF-8 username: nacos password: nacos
修改启动类SpringCloudAlibabaNacosDemoApplication
代码如下(示例):
package com.example.springcloudalibabanacosdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; import java.util.concurrent.TimeUnit; @EnableDiscoveryClient @SpringBootApplication public class SpringCloudAlibabaNacosDemoApplication { public static void main(String[] args) throws InterruptedException{ ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringCloudAlibabaNacosDemoApplication.class, args); //配置的动态更新 while(true) { //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置 String userName = applicationContext.getEnvironment().getProperty("user.name"); String userAge = applicationContext.getEnvironment().getProperty("user.age"); System.err.println("user name :" + userName + "; age: " + userAge); TimeUnit.SECONDS.sleep(1); } } }
启动项目开始校验
控制台打印如下(示例):
修改nacos中的配置查看是否动态更新
配置修改如下(示例):
控制台打印发现已经修改成功了
控制台打印如下(示例):