springboot整合nacos作配置中心

1,版本信息

  • springboot 2.2.0.RELEASE + nacos 2.2.3.RELEASE

2,操作步骤

  • 创建好springboot项目。

  • 添加nacos-config的maven依赖。

 <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       <version>2.2.3.RELEASE</version>
 </dependency>
  • 在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
  • 在配置管理中添加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;
    }

3,注意事项

  • 更新配置后,无法获取最新内容,遇到这种问题有两种解决方案。
方案一:
  • (1),检查bootstrap.yml配置信息中是否有 refresh-enabled: true, auto-refresh: true等信息。
  • (2),controller上是否使用了注解@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
方案二:
  • 新建一个配置类,同时使用@Configuration和@RefreshScope,在需要的地方注入该配置类即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容