Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心

Nacos用来做服务注册中心以及配置中心,相当于Spring Cloud的Eureka(已停止维护)或者Zookeeper(没有控制台,不方便查阅注册服务)抑或Consul(某种原因,不建议使用)服务注册中心,以及Spring Cloud Confi或携程开源的Apollo配置中心二者的结合版。

Nacos安装搭建省略,自行查看官网文档!安装启动后,访问地址http://127.0.0.1:8848/nacos,账号密码均默认为nacos

版本注意:
  孵化版本(groupId为org.springframework.cloud):
      spring-cloud-alibaba-dependencies版本0.9.0:与Spring Cloud Greenwich兼容
      spring-cloud-alibaba-dependencies版本0.2.2:与Spring Cloud Finchley兼容
      且若想支持动态刷新配置,Spring Boot必须引用2.0.X版本系列的,大于或者等于2.1.X版本的暂时不支持动态刷新配置!

  毕业版本(groupId为com.alibaba.cloud,目前基本用这个了):
      spring-cloud-alibaba-dependencies版本2.1.0.RELEASE:与Spring Cloud Greenwich兼容
      spring-cloud-alibaba-dependencies版本2.2.0.RELEASE:与Spring Cloud Hoxton兼容

(一)创建一个maven父工程,引入spring-cloud以及spring-cloud-alibaba版本依赖


        org.springframework.boot
        spring-boot-starter-parent
        2.3.0.RELEASE
    

    
        
        
            org.projectlombok
            lombok
            1.18.10
            provided
        
         
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
       
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
    

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR4
                pom
                import
            
            
                com.alibaba
                fastjson
                1.2.62
            
            
	            com.alibaba.cloud
	            spring-cloud-alibaba-dependencies
	            2.1.0.RELEASE
	            pom
	            import
            
        
    

(二)创建modules子工程

启动类:

@SpringBootApplication
public class NacosApplication {

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

}

测试类:
假如需要支持配置动态刷新,得添加注解@RefreshScope
这里的配置动态刷新,指的是启动服务后,修改Nacos控制台的远程配置文件,相应地服务会读取最新的配置,但是修改端口号且不重启服务的情况下并不会改变服务的访问端口。

@RefreshScope
@RestController
public class TestController {

   @Value("${name}")
    private String name;

    @RequestMapping(value = "/test", method = GET)
    public String test(){
        return name;
    }
}

配置文件(以下二选一即可,必须配置spring.application.name属性)

  1. application.yml(本地配置文件,若同时存在本地文件以及nacos远程配置文件,则本地文件优于远程配置文件)
## 用本地配置
server:
    port: 9777 # 启动端口
spring:
    application:
        name: nacos-config
    cloud:
        nacos:
            config:
                server-addr: 127.0.0.1:8848 # 配置中心地址
    #profiles:
    #    active: dev # 根据不同环境切换配置环境
  1. bootstrap.yml(nacos远程配置文件,假如选择这个,则需登录nacos控制台添加配置文件,下面有说明)
spring:
    application:
        name: nacos-config
    cloud:
        nacos:
            config:
                server-addr: 127.0.0.1:8848 # 配置中心地址 
                file-extension: yml # 假如不配置,则nacos远程配置文件的后缀为.properties

(三)测试(选择第二种bootstrap.yml配置文件的前提下)

选择第二种bootstrap.yml配置文件,则需登录nacos控制台添加配置文件:
Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心_第1张图片
说明(摘自nacos官网):之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profile.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项
    spring.cloud.nacos.config.prefix来配置。

  • spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当
    spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成

     ${prefix}.${file-extension}
    
  • file-exetension 为配置内容的数据格式,可以通过配置项
    spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml,默认是properties
    类型。

启动服务,测试结果:
Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心_第2张图片

然后修改Nacos控制台的远程配置文件:
Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心_第3张图片
点击确认发布后,在idea控制台可以看到输出信息,显示对name属性刷新了:
在这里插入图片描述
再次访问,结果为:
Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心_第4张图片
说明动态刷新配置成功!!!

附:

	2020.06.26对依赖版本修改

你可能感兴趣的:(Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心)