Nacos初体验

一、关于配置文件

1.配置文件的加载顺序

由图可知,优先级从高到底依次是: file://config,file://,classpath://config,classpath:// 

file://代表的是项目的根目录下,classpath在springboot项目就是resources目录。

 

2. properties和YAML两种格式的配置文件

SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。

bootstrap.yml(bootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等。

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml 加载。

二、关于Nacos

1.简介

Nacos是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发和维护。

​ Nacos支持多种注册中心和配置管理器,包括Spring Cloud Discovery、Dubbo、Kubernetes和Apache ServiceComb等。

​ Nacos提供了REST、gRPC和Java SDK等多种API,使得开发人员可以轻松地与Nacos进行交互。

2.核心特性 

  • 配置管理:Nacos提供了统一的配置管理平台,可以帮助用户集中管理不同环境的配置信息。用户可以通过Nacos的控制台或API进行配置的新增、修改、删除等操作,并且支持配置的版本管理。
  • 服务发现和注册:Nacos提供了服务注册和发现的功能,可以帮助用户快速发现和访问服务。服务提供者在启动时将服务的元数据注册到Nacos,服务消费者通过Nacos获取服务提供者的地址信息,并进行调用。
  • 动态配置:Nacos支持动态配置,可以在不停机的情况下动态修改配置信息。例如,可以通过Nacos修改数据库连接池的最大连接数,而不需要重启应用。
  • 健康检查:Nacos提供了健康检查的功能,可以检测服务的可用性。当服务不可用时,Nacos会自动将该服务从服务列表中剔除。
  • 路由策略:Nacos支持多种路由策略,可以根据不同的规则将请求路由到不同的服务提供者。

3.结构示意图

 

 三、Nacos安装

1.下载安装包

从Nacos官网(https://nacos.io/download/nacos-server/)下载压缩包,解压缩。

解压下载的安装包,进入解压后的目录。

2.运行效果

进入bin目录,点击startup.cmd

效果如下: 

 

 3.关于Nacos闪退处理

  • 以记事本方式打开startup.cmd,将set MODE="  "改为set MODE="standalone",即单例模式下。

 

  • 有可能是没有配置环境变量JAVA_HOME,或者jdk版本过低。

四、代码实现

1.导入项目依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2023.0.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.0.3</version>
        </dependency>

 

 2.创建引导配置文件bootstrap.properties

#nacos控制台地址
spring.cloud.nacos.server-addr=127.0.0.1:8848

spring.application.name=S99-User

 

 3.创建一个javabean类用于给属性赋值

@Component
@ConfigurationProperties(prefix = "uservo")
public class UserVO
{
    @Value("${uservo.name}")
    private String name;

    @Value("${uservo.id}")
    private long id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }


}

 

 4.写一个RequestMapping用于返回检验结果

@RequestMapping("/config")
    public UserVO returnUser()
    {
        return user;
    }

 

 5.在Nacos控制台给服务配置端口号,以及注入属性的值

 

 6.启动服务以及访问数据接口

 由图可知,配置的19111端口号生效

数据接口也拿到了相对的值 

6.优先级比较

我们来比较application.properties和配置中心的优先级,首先在配置中心发布一个配置,

然后在项目中新建一个配置

uservo.name=www
uservo.id=4399

访问数据接口,拿到的是以配置中心为准的结果

由此可见,配置中心的优先级高于服务中的配置

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值