Nacos的版本有严格的限制,一点不对可能就报错,但是用起来比较好用,灵活性比较大,毕竟是开源的,看不顺眼的都可以改;
Springboot集成nacos通用的有alibabaCloud、nacos-config、SDK方式
这里我们使用springboot2.7.18集成alibabaCloud的方式,中间也踩了不少的坑,可能与我原来项目的集成太多组件有关系,在此来记录一下
nacos server : 2.5.1 部署就很简单了,就不再描述。
目录
Maven环境准备
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version> <!-- 2.6到2.7都可以 -->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 去掉springboot自带的日志 ,使用的是log4j2.yml-->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<!-- 去掉springboot自带的日志,使用的是log4j2.yml-->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 配置文件读取包-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.0.5.0</version> <!-- 请根据实际情况选择合适的版本 -->
</dependency>
<!-- 服务发现包-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.5.0</version> <!-- 请根据实际情况选择合适的版本 -->
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.0</version><!-- 其它版本版本应该也可以,引入这个包主要是解决一个 -spring.config.import=nacos: property to your configuration.的报错->
</dependency>
</dependencies>
application.yml配置
当然这个还有很多属性可以进行配置,比如超时重试、用户名密码等,可参考NacosConfigProperties.class和NacosDiscoveryProperties.class文件里面的属性
server:
port: 8080
servlet:
context-path: /
spring:
application:
name: app
cloud:
nacos:
server-addr: 192.168.126.134:8848
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: c7595b0e-c04c-4a67-a486-80b3b754a579
group: gzp #对应nacos配置中心的group
enabled: true
refresh-enabled: true
discovery:
# 注册中心地址
server-addr: ${spring.cloud.nacos.server-addr}
# 所属命名空间id,用于区分开发、测试、生产
namespace: c7595b0e-c04c-4a67-a486-80b3b754a579
group: gzp #用于应用分组
logging:
config: classpath:log4j2.yml
启动类注解
@SpringBootApplication @EnableDiscoveryClient public class SpringbootNacosApplication { public static void main(String[] args) { SpringApplication.run(SpringbootNacosApplication.class, args); } }
连接
关于配置的热发布
首先在配置中心命名空间里面增加新的配置文件,也可以使用配置文件导入功能,把原有的配置导入到nacos里面,这里我踩了个坑,划重点:必须要在bootstrap.yml里面配置nacos连接信息,它会比其它配置文件优先加载,
所以要把application.yml配置的nacos信息移到bootstrap.yml里面去
bootstrap.yml配置信息:
spring:
application:
name: app
cloud:
nacos:
server-addr: 192.168.126.134:8848
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: c7595b0e-c04c-4a67-a486-80b3b754a579
group: gzp
file-extension: yaml
enabled: true
refresh-enabled: true
discovery:
# 注册中心地址
server-addr: ${spring.cloud.nacos.server-addr}
# 所属命名空间id,用于区分开发、测试、生产
namespace: c7595b0e-c04c-4a67-a486-80b3b754a579
group: gzp
Nacos配置文件
修改属性:
spring.cloud.nacos.config.enabled: true
spring.cloud.nacos.config.refresh-enabled: true #可在修改完配置后应用程序拿到最新参数
在代码里面获取Nacos的配置属性,可直接使用@Value拿到:
启动后访问:
动态修改参数:
再次访问:
其它参数,比如服务重连等属性后面再玩
至此完成!