Nacos学习(二)对Spring应用的支持

2019-11-05  本文已影响0人  nzdxwl

nacos有以下三个子项目,Nacos Spring、Nacos Spring Boot、Nacos Spring Cloud,分别对应Spirngframework、Spring Boot和 Spring Cloud三个框架提供支持。

下面主要是介绍在Spring项目中如何使用Nacos Spring Boot或Nacos Spring Cloud与Nacos服务端交互,Spring Boot使用的是 2.1.9.RELEASE 版本

Nacos Spring Boot:

依赖以及版本:

在Spring Boot项目中添加以下依赖

    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-config-spring-boot-starter</artifactId>
        <version>0.2.2</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-discovery-spring-boot-starter</artifactId>
        <version>0.2.2</version>
    </dependency>       
    <dependency>
        <groupId>com.alibaba.boot</groupId>
        <artifactId>nacos-discovery-spring-boot-actuator</artifactId>
        <version>0.2.2</version>
    </dependency>

这里我们使用的0.2.2版本,使用当前最新版本是0.2.3也是可以的,小版本的变化一般都能兼容,使用nacos-discovery-spring-boot-actuator依赖的原因是它提供了一个EndPoint,EndPoint的访问地址为 http://ip:port/actuator/nacos-discovery,可通过它来查看相关信息

添加配置

nacos.config.server-addr=127.0.0.1:8848
nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=health,info,nacos-discovery

前面两行分别配置nacos配置中心地址以及服务中心地址,这里使用同一nacos服务器端。
最后一行则是配置应用要暴露的actuator终端点,这里只允许health、info和nacos增加的nacos-discovery终端点

  1. 在启动类例如QuickstartApplication中添加@EnableNacosConfig
  2. 在配置类添加@NacosPropertySource(dataId = "<这里是dataid>", autoRefreshed = true) 注解指明对应nacos那个数据id,配置类中的属性则添加@NacosValue注解跟对应的配置项关联,例如:@NacosValue(value = "${homeText: default msg}", autoRefreshed = true)
  1. 在启动类例如QuickstartApplication中添加@EnableNacosDiscovery
  2. 注册当前服务到nacos server,例如:
    @Value(value = "${nacos.discovery.server-addr}") //直接读取配置项
    private String serverAddr;
    
    @PostConstruct
    private void init() {
        try {
            String serverAddr = getServerAddr();
            Properties properties = new Properties();
            properties.put("serverAddr", serverAddr);
            NamingService naming = NamingFactory.createNamingService(properties);
            naming.registerInstance("quickstart", "192.168.43.104", 8181);
        } catch (NacosException e) {
            e.printStackTrace();
        }   
    }

Nacos Spring Cloud:

依赖以及版本:
     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>0.9.0.RELEASE</version>
    </dependency>

     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.9.0.RELEASE</version>
    </dependency>

这里使用的是Nacos Spring Cloud 0.9.0.RELEASE的版本,注意到groupId和artifactId已经变成spring命名方式了,并且nacos-discovery终端点也整合到nacos-discovery依赖包中了。

添加配置

spring.application.name=quickstart_cloud
spring.cloud.nacos.discovery.server-addr=192.168.43.104:8848
#配置中心参数
spring.cloud.nacos.config.server-addr=192.168.43.104:8848
spring.cloud.nacos.config.file-extension=properties
#Spring Boot actuator功能参数
management.endpoints.web.exposure.include=health,info,nacos-discovery

spring boot本身功能参数以及nacos跟配置中心相关参数需要放在bootstrap配置文件中,其他例如spring.application.name等参数则可以在application.properties中配置,此时放一起方便说明。
Nacos Spring Cloud可以支持多个datatid。

spring.application.name=quickstart_main
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.ext-config[0].data-id=quickstart_cloud.properties
spring.cloud.nacos.config.ext-config[0].group=quickstart_cloud
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=quickstart_cloud.yaml
spring.cloud.nacos.config.ext-config[1].group=quickstart_cloud
spring.cloud.nacos.config.ext-config[1].refresh=true

上面示例除了使用dataid等于“quickstart_main.yaml”的配置数据外,还有两个扩展的配置,dataid为“ quickstart_cloud.properties”和“quickstart_cloud.yaml” 的这两个,扩展配置数据分组可以与主配置数据分组不同。

上一篇下一篇

猜你喜欢

热点阅读