spring-boot中bootstrap.properties配置nacos

## 应用名称
spring.application.name=smartworkflowbusiness
## nacos配置中心请求地址
spring.cloud.nacos.config.server-addr=192.168.1.1:9001
## nacos 命名空间
spring.cloud.nacos.config.namespace=public
## nacos组
spring.cloud.nacos.config.group=DEFAULT_GROUP
## nacos配置中心环境
spring.profiles.active=test
## nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=192.168.1.1:9001
## nacos 注册中心命名空间
spring.cloud.nacos.discovery.namespace=cf94d71d-81c8-4e6f-8c25-8bf14c870701
## nacos 运行注册发现
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.service=${spring.application.name}
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
     <version>${alibaba-clound.version}</version>
     <type>pom</type>
     <scope>import</scope>
</dependency>

<!-- nacso注册-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- nacso配置-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
package com.fast.cattsoft.nacos;

import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Properties;

/**
 * @ClassName
 * @Description
 * @Author qiangsw
 * @date 2020/9/12 10:31
 * @Version 1.0
 * TODO 获取某个服务注册信息
 */
@Component
public class NacosServiceIntance {

    public static String nacosServerAddr;

    public static String group;

    public static String namespace;

    @Value("${spring.cloud.nacos.discovery.server-addr}")
    public void setNacosServerAddr(String nacosServerAddr) {
        this.nacosServerAddr = nacosServerAddr;
    }

    ;

    @Value("${spring.cloud.nacos.config.group}")
    private void setGroup(String group) {
        this.group = group;
    }

    @Value("${spring.cloud.nacos.discovery.namespace}")
    private void setNamespace(String namespace) {
        this.namespace = namespace;
    }

    public static Instance getServiceIntance(String dataId) throws NacosException {
        Properties properties = new Properties();
        properties.put("serverAddr", nacosServerAddr);
        properties.put("namespace", namespace);
        NamingService namingService = NamingFactory.createNamingService(properties);
        return namingService.selectOneHealthyInstance(dataId);
    }
}
package com.cattsoft.gateway.service;

import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.gateway.filter.FilterDefinition;
import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
import org.springframework.cloud.gateway.route.RouteDefinition;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;

/**
 * @ClassName
 * @Description
 * @Author qiangsw
 * @date 2020/8/25 14:56
 * @Version 1.0
 * TODO 动态获取nacos 配置信息更新网关路由信息
 */

@RestController
@Slf4j
public class RoutePublishService {

    @Autowired
    private DynamicRouteService dynamicRouteService;

    @Value("${spring.cloud.nacos.config.server-addr}")
    private String nacosServerAddr;
    @Value("${spring.application.name}")
    private String applicationName;
    @Value("${spring.profiles.active}")
    private String active;
    @Value("${spring.cloud.nacos.config.group}")
    private String group;
    @Value("${spring.cloud.nacos.config.namespace}")
    private String namespeac;


    @PostConstruct
    public void conversion() {
        Properties properties = new Properties();
        properties.put("serverAddr", nacosServerAddr);
        properties.put("namespeac", namespeac);
        String dataId = applicationName + "-" + active + ".properties";
        log.info("nacos配置监听,namespeac[{}]#group[{}]#dataId[{}]", namespeac, group, dataId);
        try {
            ConfigService configService = NacosFactory.createConfigService(properties);
            configService.addListener(dataId, group, new Listener() {
                @Override
                public Executor getExecutor() {
                    return null;
                }

                @Override
                public void receiveConfigInfo(String configInfo) {
                    log.info("nacos服务[{}]配置更新{}", applicationName, configInfo);
                    if (StringUtils.isEmpty(configInfo)) {
                        return;
                    }
                    List<String> list = Arrays.asList(configInfo.split("\\r\\n"));
                    List<String> ids = Optional.of(list).map(a -> list.stream().filter(filter -> {
                        String[] split1 = filter.split("=");
                        if (split1[0].indexOf("].id", 0) != -1) {
                            return true;
                        }
                        return false;
                    }).map(map -> {
                        String[] split = map.split("=");
                        return split[1];
                    }).collect(Collectors.toList())).get();
                    update(ids);
                }
            });
        } catch (NacosException e) {
            log.error("nacos热更新配置异常:", e);
        }
    }

    public void update(List<String> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }

        ids.forEach(each -> {
            RouteDefinition routeDefinition = new RouteDefinition();
            routeDefinition.setId(each);
            URI uri = null;
            try {
                uri = new URI("lb://" + each);
            } catch (URISyntaxException e) {
                log.info("路由id[{}]发生:", each, e);
                return;
            }
            routeDefinition.setUri(uri);
            FilterDefinition filterDefinition = new FilterDefinition();
            filterDefinition.setName("StripPrefix");
            Map<String, String> filterArgs = new LinkedHashMap();
            filterArgs.put("_genkey_0", "1");
            filterDefinition.setArgs(filterArgs);
            List<FilterDefinition> filterDefinitions = Lists.newArrayList();
            filterDefinitions.add(filterDefinition);

            PredicateDefinition predicateDefinition = new PredicateDefinition();
            predicateDefinition.setName("Path");
            Map<String, String> PredicateDefinitionargs = new LinkedHashMap();
            PredicateDefinitionargs.put("pattern", "/"+each+"/**");
            predicateDefinition.setArgs(PredicateDefinitionargs);
            List<PredicateDefinition> predicateDefinitions = Lists.newArrayList();
            predicateDefinitions.add(predicateDefinition);
            routeDefinition.setPredicates(predicateDefinitions);
            routeDefinition.setFilters(filterDefinitions);
            dynamicRouteService.updateRoute(routeDefinition);
        });

    }

    @GetMapping("/doConversion")
    public void doConversion() {
        conversion();
    }
}

 

<think>好的,用户现在的问题是要找和Spring Boot 2.0.6.RELEASE兼容的Spring Cloud Alibaba Nacos Config版本。首先,我需要回忆一下Spring Cloud Alibaba的版本与Spring Boot的对应关系。 根据之前的经验,Spring Cloud Alibaba的版本通常与Spring Cloud的版本相关联,而Spring Cloud版本又对应特定的Spring Boot版本。比如,Spring Cloud Hoxton对应Spring Boot 2.2.x和2.3.x,而Spring Cloud Greenwich对应Spring Boot 2.1.x。用户用的是Spring Boot 2.0.6,这属于Spring Boot 2.0.x系列,可能需要更早的Spring Cloud版本。 查看官方文档,Spring Cloud Alibaba 2.1.x版本通常对应Spring Cloud Greenwich,而Greenwich支持的Spring Boot是2.1.x。不过,用户用的是更旧的2.0.6,可能需要更早的Alibaba版本。比如,Spring Cloud Alibaba 0.9.x或更早可能支持Spring Boot 2.0.x。 另外,用户提供的引用[1]中的链接指向Greenwich版本的文档,可能暗示Spring Cloud Alibaba Greenwich版本,但需要确认是否兼容Spring Boot 2.0.6。可能需要检查版本兼容性表格。例如,官方文档可能有版本对应表,说明每个Spring Cloud Alibaba版本兼容的Spring BootSpring Cloud版本。 假设Spring Cloud Alibaba 0.2.x对应Spring Cloud Finchley,而Finchley支持Spring Boot 2.0.x。因此,用户可能需要使用较旧的Spring Cloud Alibaba版本,如0.2.2.RELEASE,配合Spring Cloud Finchley.SR2,以及Spring Boot 2.0.6.RELEASE。 此外,需要确认nacos-config的具体版本是否在0.2.x中存在。可能当时的Spring Cloud Alibaba版本中,nacos-config的artifactId或版本号有所不同,可能需要具体检查。 用户提供的引用中有提到dubbo-admin的配置,可能和Nacos Config无关,但需要确保依赖版本之间没有冲突。例如,Nacos Config和Dubbo的版本是否兼容同一Spring Boot版本。 最后,建议用户参考官方版本兼容性文档,并给出具体的版本组合示例,确保依赖正确。同时提醒版本过旧可能存在的安全或功能限制,建议升级Spring Boot版本以获得更好的支持。</think>根据Spring Cloud Alibaba版本兼容性关系,$spring-boot-starter-parent-2.0.6.RELEASE$ 对应的推荐版本组合为: $$ \begin{aligned} \text{Spring Boot} &\rightarrow 2.0.6.RELEASE \\ \text{Spring Cloud} &\rightarrow Finchley.SR2 \\ \text{Spring Cloud Alibaba} &\rightarrow 0.2.2.RELEASE \\ \text{Nacos Config} &\rightarrow 0.8.0 \end{aligned} $$ 具体实现步骤如下: 1. **设置父级依赖** ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> </parent> ``` 2. **添加Spring Cloud依赖管理** ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR2</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` 3. **添加Nacos Config依赖** ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` **注意**:该版本组合中Nacos Server建议使用$1.3.2$版本,需在$bootstrap.properties$中配置: ```properties spring.cloud.nacos.config.server-addr=127.0.0.1:8848 ``` [^1]: 关于版本兼容性说明可参考Spring Cloud Alibaba官方版本路线图
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值