首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringBoot整合Nacos作为配置中心

创建配置

使用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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230321A0059700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券