Nacos 应用到单体架构(一)

场景介绍

假如我们有一个简单项目(nacos_multi_env),该项目需要在开发环境(dev)和生产环境(prod)运行。

Nacos 配置

我们可以通过 Nacos 的命名空间来实现该项目的多环境配置隔离。

(1)创建 dev 命名空间,并且在该命名空间中创建一个 nacos_multi_env 配置集,如下图:

Nacos 应用到单体架构(一)

nacos_multi_env 配置集内容为:

type=dev

(2)创建 prod 命名空间,并且在该命名空间中创建一个 nacos_multi_env 配置集,如下图:

Nacos 应用到单体架构(一)

nacos_multi_env 配置集内容为:

type=prod

创建项目

使用 IDEA 创建一个 Spring Boot 项目,项目结构图如下:

Nacos 应用到单体架构(一)

该项目存在三个 properties 配置文件,内容分别如下:

application.properties

# 激活生产环境
spring.profiles.active=prod

application-dev.properties

# 配置 Nacos 服务地址,可以提取到 application.properties 文件
nacos.config.server-addr=127.0.0.1:8848
# 配置开发环境命名空间ID
nacos.config.namespace=76b0ae14-c50f-4699-98f1-49d38069a58a

application-prod.properties

# 配置 Nacos 服务地址,可以提取到 application.properties 文件
nacos.config.server-addr=127.0.0.1:8848
# 配置生产环境命名空间ID
nacos.config.namespace=15e99b1b-8c40-44b9-9daa-23891d2c180f

MainApplication.java

项目的启动类,使用 @NacosPropertySource 注解加载 dataId 为 example 的配置源,并开启自动更新。代码如下:

package com.hxstrive.nacos;

import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
// 注入配置源
@NacosPropertySource(dataId = "nacos_multi_env", autoRefreshed = true)
public class MainApplication {

   public static void main(String[] args) {
       SpringApplication.run(MainApplication.class, args);
   }

}

ConfigController.java 

一个简单的控制器,通过 @NacosValue 注解注入 type 配置项,代码如下:

package com.hxstrive.nacos;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

@Controller
@RequestMapping("config")
public class ConfigController {

   @NacosValue(value = "${type:}", autoRefreshed = true)
   private String type;

   @RequestMapping(value = "/get", method = GET)
   @ResponseBody
   public String get() {
       return type;
   }

}

启动&验证

运行 MainApplication 类,启动项目,项目启动成功后,通过浏览器访问 http://localhost:8080/config/get  地址,输出如下:

Nacos 应用到单体架构(一)

如果将 spring.profiles.active 设置为 dev,则将输出 dev 字符串。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号