创建配置
使用nacos创建和web服务同名的配置文件:nacos-web.yml
内容:
key: zhangdapeng
引入依赖
pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.zhangdapeng520
nacos-web
jar
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
1.8
UTF-8
UTF-8
Greenwich.SR2
2.1.0.RELEASE
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
$
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
$
pom
import
项目配置
注意:要使用配置中心,配置文件不要叫application.yml,而要改为bootstrap.yml。
bootstrap.yml
spring:
application:
name: nacos-web
cloud:
nacos:
discovery: # 服务发现地址
server-addr: 192.168.1.6:8848
config: # 配置中心地址
server-addr: 192.168.1.6:8848
file-extension: yml # 文件拓展名
#健康检查
management:
endpoints:
web:
exposure:
include: "*"
server:
port: 8081 # web 端口
logging:
level:
org.springframework.web: debug # 日志级别
修改启动类
Application.java
package com.zhangdapeng520;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient // 注册中心客户端
public class HelloSpringboot2Application {
public static void main(String[] args) {
SpringApplication.run(HelloSpringboot2Application.class, args);
}
}
创建Controller
controller.HelloController.java
package com.zhangdapeng520.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 HelloController {
@Value("$")
private String key; // 读取配置中心的配置
@GetMapping("/hello")
public String hello() {
return key;
}
}
启动测试
启动服务,访问nacos的服务列表:
浏览器访问:http://localhost:8081/hello
动态刷新
只需要给controller加上RefreshScope注解即可。
controller.HelloController.java
package com.zhangdapeng520.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class HelloController {
@Value("$")
private String key; // 读取配置中心的配置
@GetMapping("/hello")
public String hello() {
return key;
}
}
之后重启服务,然后去配置中心修改配置信息,再刷新浏览器页面进行测试。
多环境配置
在nacos中创建一个nacos-web-dev.yml:
key: zhangdapeng-dev
修改配置,在bootstrap.yml中指定使用dev配置:
spring:
application:
name: nacos-web
cloud:
nacos:
discovery: # 服务发现地址
server-addr: 192.168.1.6:8848
config: # 配置中心地址
server-addr: 192.168.1.6:8848
file-extension: yml # 文件拓展名
prefix: nacos-web
profiles:
active: dev # 指定激活的环境
...
重启服务,浏览器访问:http://localhost:8081/hello
共享配置
可以通过shared-dataids指定共享配置文件,加载公共配置。通过refreshable-dataids可以指定对哪些共享配置文件进行动态刷新。
在nacos中创建common.yml:
common: abc
在bootstrap.yml中配置共享:
spring:
application:
name: nacos-web
cloud:
nacos:
discovery: # 服务发现地址
server-addr: 192.168.1.6:8848
config: # 配置中心地址
server-addr: 192.168.1.6:8848
file-extension: yml # 文件拓展名
prefix: nacos-web
shared-dataids: common.yml # 共享配置
refreshable-dataids: common.yml # 如果有多个,用逗号分割
profiles:
active: dev # 指定激活的环境
...
在HelloController中读取共享配置:
package com.zhangdapeng520.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class HelloController {
@Value("$")
private String key; // 读取配置中心的配置
@Value("$")
private String common; // 读取配置中心的配置
@GetMapping("/hello")
public String hello() {
return key + common;
}
}
重启服务,浏览器访问:http://localhost:8081/hello
领取专属 10元无门槛券
私享最新 技术干货