springboot整合nacos作配置中心

1,版本信息

  • springboot 2.2.0.RELEASE + nacos 2.2.3.RELEASE

2,操作步骤

  • 创建好springboot项目。

  • 添加nacos-config的maven依赖。

 
       com.alibaba.cloud
       spring-cloud-starter-alibaba-nacos-config
       2.2.3.RELEASE
 
  • 在resources中新建bootstrap.yml,配置如下:
spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        ## 文件后缀
        file-extension: yml
        refresh-enabled: true
    refresh:
      enabled: true
  application:
    name: nacos-config-example
nacos:
  config:
    auto-refresh: true
  • 启动nacos-server服务,浏览器访问http://localhost:8848/nacos进入管理界面如下:
    nacos界面1.png
  • 在配置管理中添加data Id、GROUP,选择配置格式,这里选的是YAML格式的,并在配置内容中添加内容,如下图所示:


    nacos界面2.png
  • 点击发布配置完成保存。

  • 使用单元测试或新建controller,这里使用controller为例,添加注解@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)和注 入需要获取的配置内容,如下所示:

@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)//允许远程修改自动刷新
public class ConfigController {
    private static final String SERVER_ADDR = "127.0.0.1:8848";
    private static final String TEST_NAMESPACE = "public";

    @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
    private boolean useLocalCache;

    @Value(value = "${user.nickName}")
    private String userName;

    @GetMapping("/getUserName")
    public String getUserName(){
        return userName;
    }
  • 启动项目服务,访问:http://localhost:8080/config/getUserName 即可获取最新配置内容。

3,注意事项

  • 更新配置后,无法获取最新内容,遇到这种问题有两种解决方案。
方案一:
  • (1),检查bootstrap.yml配置信息中是否有 refresh-enabled: true, auto-refresh: true等信息。
  • (2),controller上是否使用了注解@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
方案二:
  • 新建一个配置类,同时使用@Configuration和@RefreshScope,在需要的地方注入该配置类即可

你可能感兴趣的:(springboot整合nacos作配置中心)