java客户端访问nacos配置使用总结

发布时间 2023-12-28 17:00:58作者: 大树2

客户端访问nacos配置:

父工程:

com.alibaba.cloud
spring-cloud-alibaba-dependencies
2021.0.5.0
pom
import

子工程:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
        <version>3.1.0</version>
    </dependency>

pom.yml
spring:
application:
name: userservice
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
namespace: 0223cc90-7cf0-4f11-a00d-fae7f81ea892
group: DEFAULT_GROUP
username: nacos
password: nacos

5.application.yml
cloud:
nacos:
config:
import-check:
enabled: false

6.配置一个对应要访问nacos yaml文件的类:
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
private String mysqldb;
private String username;
private String password;
}

  1. 2种读取nacos配置文件数据的方法:
    @Value("${pattern.mysqldb}")
    private String dbip;

    @GetMapping("dbip")
    public String dbip(){
    return dbip;
    }

    方法2:PatternProperties 类读取nacos
    @ConfigurationProperties(prefix = "pattern")
    public class PatternProperties {
    private String dateformat;
    private String mysqldb;
    private String username;
    private String password;
    }

controller:
@Autowired
private PatternProperties properties;

@ApiOperation("Config")
@GetMapping("Config")
public Object Config(){

    return  properties;
}

9.数据热更新的2种方式:
最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。
方式1:
在@Value注入的变量所在类上添加注解@RefreshScope

方式2:
使用@ConfigurationProperties注解代替@Value注解。
在user-service服务中,添加一个类,读取patterrn.dateformat属性

10.【注意事项】:
spring-cloud-starter-alibaba-nacos-config 模块移除了 spring-cloud-starter-bootstrap 依赖,如果你想以旧版的方式使用,你需要手动加上该依赖,现在推荐使用spring.config.import方式引入配置。

如果你想使用bootstrap来进行配置的话,就在pom.xml文件里面添加该依赖即可,然后按照官方文档进行配置:

在pom.xml文件下引入依赖

org.springframework.cloud
spring-cloud-starter-bootstrap
3.1.0

pom.xml demo:

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
        <version>3.1.0</version>
    </dependency>