火车头wordpress小说深圳网站设计十年乐云seo
分布式配置的优势:
不需要重新发布我们的应用
新建父工程:【将它作为跟 所以要把父工程里面的src删掉】
新建子模块:
新建bootstrap.properties:
在使用Nacos作为配置中心时,推荐在bootstrap.properties
中配置Nacos相关信息,
而不是在application.properties
中
原因主要涉及Spring Boot的启动过程和配置加载顺序:
1. 优先级高:
bootstrap.properties 的加载优先级高于 application.properties
即:它可以在应用启动之前就完成对 Nacos 客户端的配置,确保客户端能够尽早地建立与 Nacos 服务器的连接
2. 非 Spring 管理的配置:
bootstrap.properties
中的配置不会被 Spring 应用上下文所管理
即:即使在 Spring 应用上下文尚未完全初始化的情况下,Nacos 客户端也可以通过这些配置正常工作
总结:
application.properties 是为 Spring Boot 服务的,而 Spring Boot 底层用的就是 Spring
一定要在Spring应用启动之前 早一步从nacos那里把相关的配置拿下来
<?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><parent><groupId>cn.jsmart</groupId><artifactId>smart-root</artifactId><version>0.0.1-SNAPSHOT</version></parent><!-- 父的打包方式 --><packaging>pom</packaging><modules><module>nacos-config</module></modules><artifactId>spring-cloud-alibaba-root</artifactId><groupId>com.beiyou</groupId><version>0.0.1-SNAPSHOT</version></project>
<?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><parent><artifactId>spring-cloud-alibaba-root</artifactId><groupId>com.beiyou</groupId><version>0.0.1-SNAPSHOT</version><!-- 用来指定关系 --><relativePath>../pom.xml</relativePath></parent><artifactId>nacos-config</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><!-- starter-web 里面自带SpringMVC 不加这个 很多注解就引不进来--><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
spring.application.name = order-servicespring.cloud.nacos.config.server-addr = 192.168.21.17:8848
# 命名空间的配置,若不配置 则默认为public空间 若配置了 就以配置为准
spring.cloud.nacos.config.namespace = public
# 就是 nacos 里的DataId, 如果不配置 就默认使用的是 spring.application.name 的值
spring.cloud.nacos.config.name = order-service
# 配置文件的格式 ,值是properties 则可以省略 若是其他格式 则必须配置
spring.cloud.nacos.config.file-extension = properties
# 配置组 默认是DEFAULT_GROUP
spring.cloud.nacos.config.group = DEFAULT_GROUP
package com.beiyou.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@Value("${example.first}")private String first;@GetMapping("/test")public String test(){return this.first;}
}
在nacos中 通过哪个注解 可以实现自动更新?
【idea启动后请求得到结果1,在nacos中 将结果1修改为结果2 重新发布 ,在idea中 直接请求就能拿到结果2,所以不用再次启动idea了,但若是在配置里 新加配置内容 还是需要重新启动idea的】
通过注解@RefreshScope,即:所谓的热更新
版本迭代的时候 用组(即:可以在同一项目下 有不同的版本号),
但基本上 我们在开发的时候 用的还是DEFAULT_GROUP
.Nacos 与 application.properties 同时配置了同一个key? 谁的优先级高?为什么?
bootstrap.properties 的优先级更高,原因见上述
这种分布式配置的优势?
优势:
① 我们在更改配置的时候 不需要再重新发布了
② 配置变得更灵活了