当前位置: 首页 > news >正文

SprinBoot集成nacos

环境搭建

采用docker-compose搭建测试环境


# docker-compose参考:https://github.com/nacos-group/nacos-docker/blob/master/example/standalone-mysql-5.7.yaml
# Nacos文档:https://nacos.io/zh-cn/index.html
version: '3'

# 网桥 -> 方便相互通讯
networks:
  nacos:
    driver: bridge

services:
  nacos:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/nacos-server:2.2.0    # 原镜像`nacos/nacos-server:2.2.0`
    container_name: nacos_server                                 # 容器名为'nacos_server'
    restart: unless-stopped                                              # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes:                                                     # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./nacos/logs:/home/nacos/logs"
    environment:                        # 设置环境变量,相当于docker run命令中的-e
      - PREFER_HOST_MODE=hostname                 # 如果支持主机名可以使用hostname,否则使用ip,默认也是ip
      - MODE=standalone                           # 单机模式启动
      - SPRING_DATASOURCE_PLATFORM=mysql          # 数据源平台 仅支持mysql或不保存empty
      # TODO 修改mysql连接信息
      - MYSQL_SERVICE_HOST=10.11.68.77           # 注:这里不能为`127.0.0.1`或`localhost`方式!!!
      - MYSQL_SERVICE_DB_NAME=nacos_config        # 所需sql脚本位于 `nacos/nacos-mysql.sql`
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=root
      # TODO 修改JVM调优参数
      - JVM_XMS=128m   #-Xms default :2g
      - JVM_XMX=128m   #-Xmx default :2g
      - JVM_XMN=64m    #-Xmn default :1g
      - JVM_MS=32m     #-XX:MetaspaceSize default :128m
      - JVM_MMS=32m    #-XX:MaxMetaspaceSize default :320m
    ports:
      - "8848:8848"
    depends_on:
      - mysql
    networks:
      - nacos
    mem_limit: 1000m   # 最大使用内存
  mysql:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7
    container_name: nacos-mysql
    restart: unless-stopped
    volumes:
      - "./nacos/mysql5.7/my.cnf:/etc/mysql/my.cnf"
      - "./nacos/mysql5.7/data:/var/lib/mysql"
      - "./nacos/mysql5.7/log/mysql/error.log:/var/log/mysql/error.log"
    environment:
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      MYSQL_ROOT_PASSWORD: root         # 设置root用户密码
      MYSQL_DATABASE: nacos_config           # 初始化数据库
    ports:
      - "3306:3306"
    networks:
      - nacos

启动环境


# tips: 先修改配置与导入`nacos/nacos-mysql.sql`
docker-compose -f docker-compose.yml -p nacos up -d

访问地址:ip地址:8848/nacos 登录账号密码默认:nacos/nacos

新增配置:
在这里插入图片描述

一、添加依赖


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         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">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>nacos</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <!-- 2.1.2版本以上支持纯净版客户端 -->
        <nacos.version>0.2.7</nacos.version>

    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>${nacos.version}</version>
        </dependency>

    </dependencies>
</project>

二、配置文件和启动类

nacos:
  config:
    server-addr: 127.0.0.1:8848
@SpringBootApplication
@NacosPropertySource(dataId = "test", autoRefreshed = true)// dataId同nacos中的id保持一致
public class DemoApplication {

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

三、Controller

@Controller
@RequestMapping("config")
public class ConfigController{
	
	@NacosValue(value="${userLocalCache:false}",autoRefreshed = true)
	private boolean useLocalCache;

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

测试:

访问 http://localhost:8080/config/get,返回内容是 false
通过nacos控制台修改配置:dataId 为example,内容为useLocalCache=true
再次访问 http://localhost:8080/config/get,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。

相关文章:

  • Unity 轮转图, 惯性, 自动回正, 点击选择
  • 每日学习总结20240301
  • Java11之后的jdk到底要不要生成jre目录?
  • 代码随想录算法训练营番外 刷题日记0301 || 29、两数相除,31、下一个排列
  • 第二代Spring Cloud Alibaba主流时代
  • 一周学会Django5 Python Web开发-Django5详细视图DetailView
  • 11. Nginx进阶-HTTPS
  • ⭐每天一道leetcode:27.移除元素(简单;vector)
  • 批量下载抖音视频|抖音数据挖掘软件
  • hive 中少量数据验证函数的方法-stack
  • Android m/mm/mmm/make编译模块
  • Linux入门到入土
  • c++面试三 -- 智能指针--7000字
  • 黑客技术(网络安全)自学2024
  • 运维随录实战(5)之centos搭建jenkins
  • Linux网络TCP和UDP协议解析
  • 在CentOS上使用Gunicorn和systemd完整部署Flask应用:详细指南
  • Flutter的线程模型
  • Gitlab 安装部署
  • Backend - 日志记录
  • 对排出黑烟车辆出具合格报告,广州南沙一检测公司被罚十万元
  • 安徽一交通事故责任认定引质疑:民警和司法鉴定人被处罚,已中止诉讼
  • 《2025职场人阅读报告》:超半数会因AI改变阅读方向
  • 无视规范开“远端”、企业云端被窃密,国安部:莫让运维成运“危”
  • 神二十成功对接空间站
  • 济南市莱芜区委书记焦卫星任济南市副市长