一.向pom.xml文件中引入依赖 依赖缺少将无法注册
//1.基本的版本信息
<properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> //jdk版本 <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> //spring boot版本 <spring-boot.version>2.4.2</spring-boot.version> //基于spring cloud的spring colud alibaba版本 <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version> //Spring cloud 版本 <spring-cloud.version>2020.0.6</spring-cloud.version> </properties>
//2.添加依赖信息
//此依赖spring boot 项目的启动依赖必不可少
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
//如果你想使用nacos的动态配置切换功能,则必须添加该依赖 否则无需添加
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
//如果你没有直接将上面图片中nacos的配置写入到application.yml文件中,而是重新创建了一个bootstrap.yml文件则需要此依赖,否则不需要
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
//此依赖实现nacos的注册发现 必须添加否则无法注册服务到nacos
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId </dependency>
//3.依赖的版本控制
<dependencyManagement> //在1中我们以及添加了版本信息 在此进行版本控制,意思就是<groupId>org.springframework.cloud</groupId> ,这个dependencies可以理解为只要group id为org.springframework.cloud,则使用这个版本 <dependencies> • <dependency> • <groupId>org.springframework.cloud</groupId> • <artifactId>spring-cloud-dependencies</artifactId> • <version>${spring-cloud.version}</version> • <type>pom</type> • <scope>import</scope> </dependency> //spring boot版本控制 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> //sping cloud alibaba版本控制 <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> </dependencyManagement>
//4.使用docker 安装nacos后如果无法使用 ip:8848 访问到nacos,
检查防火墙设置:如果端口映射设置正确,但仍无法访问Nacos,那么可能是由于防火墙设置阻止了对 Nacos容器端口的访问。可以通过以下命令检查防火墙设置:
sudo iptables -A INPUT -p tcp --dport 8848 -j ACCEPT
如果此时还未访问成功,请检查你的访问路径是否为 ip:8848/nacos,nacos绝对不可以丢
//如果是云服务器则还需要在界面打开端口8848
//5注册成功,将会在控制台展示nacos的相关信息!
二.nacos服务注册的配置文件的攥写
spring: application: name: gzwd-oss //当前的注册的微服务名称,必须添加 profiles: active: dev //代表当前是一个开发环境,如果是测试环境就写test,不加也不影响注册 cloud: nacos: discovery: enabled: true server-addr: //必须添加,当前nacos的地址
三.动态配置切换功能
1.添加依赖 spring-cloud-starter-alibaba-nacos-config (具体添加依赖在第一步中可以找到),这我们就可以在配置文件中添加spring.nacos.config配置了
2.更新配置文件
spring: application: name: gzwd-oss profiles: active: dev//2.当前动态配置data-id的前缀,拼接在prefix的后面 cloud: nacos: //动态配置切换的配置 config: //nacos的地址 server-addr: //1.当前动态配置data-id的前缀,如果不设置则是默认的spring.application.name prefix: ${spring.application.name} group: DEFAULT_GROUP namespace: file-extension: yml //3.当前动态配置data-id的后缀,拼接在prefix的后面 data-id: gzwd-oss-dev.yml discovery: enabled: true server-addr: storage: config: minio //测试动态切换功能,将minio切换成aliyun •
通过配置文件中的1,2,3获得data-id为,spring.cloud.nacos.prefix(没有默认为spring.application.name)+spring.profiles.active.yml(yml 是由spring.cloud.nacos.file-extension确定)
3.nacos的配置
将2中获得的data_id添加,group默认为 DEFAULT_GROUP,与配置文件中的保持一致即 可,配置格式与data_id的后缀保持一致,
切换minio为aliyun
4.动态配置功能检验
//spring boot启动时,会自动配置,@ConfigurationProperties(prefix = "storage")会将我 们配置文件中stroge:中的同名属性,放入到 同名属性中,
//@Component并将ExamplePropertie加入到ioc容器中去(控制反转ioc)
@Component @ConfigurationProperties(prefix = "storage") //@RefreshScope 这个注解是刷新这个bean的注解,如果你最好无法存根检测出正确结果,可以加上该注解尝试刷新ExampleProperties public class ExampleProperties { private String config; // getters and setters public String getConfig() { return config; } public void setConfig(String config) { this.config = config; } }
//检测结果