spring接入nacos配置中心

Posted cj_eryue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring接入nacos配置中心相关的知识,希望对你有一定的参考价值。

目录

第一步,启动naocs

第二步,nacos上配置相关配置

第三步,编写nacos的自动配置类

第四步,测试


项目中的配置中心需要由zookeeper转移到nacos,项目使用的框架为springmvc4.3.15

本地环境整个demo先,记录下集成过程

引入依赖:

<dependency>
     <groupId>com.alibaba.nacos</groupId>
     <artifactId>nacos-spring-context</artifactId>
     <version>1.1.0</version>
</dependency>

第一步,启动naocs

本地启动一个nacos即可,不做赘述

第二步,nacos上配置相关配置

第三步,编写nacos的自动配置类

package com.bes.nacos;

import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.api.config.ConfigType;
import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @Author: cjian
 * @Date: 2023/3/31 10:31
 * @Des:
 */
@Configuration
@PropertySource("classpath:config.properties")
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "$nacos.server-addr", namespace = "$nacos.namespace"))
@NacosPropertySource(dataId = "$nacos.data.id", groupId = "$nacos.group.id", type = ConfigType.YAML, autoRefreshed = true)
public class NacosConfiguration 


config.properties配置:
# nacos 相关配置
# nacos地址
nacos.server-addr=127.0.0.1:8848
# nacos配置的命名空间
nacos.namespace=WEBGATE
# nacos配置的dataId
nacos.data.id=config.yaml
# nacos配置的groupId
nacos.group.id=webgate_console

第四步,测试

共测试两个点:

package com.bes.nacos;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.bes.bean.Project;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/**
 * @Author: cjian
 * @Date: 2023/3/31 10:32
 * @Des:
 */
@Controller
@RequestMapping("config")
public class ConfigController 

    //debug 使用
    @Autowired
    private ConfigurableApplicationContext applicationContext;

    //1、测试nacos自动的注入配置是否正常
    @NacosValue(value = "$com.cjian.project.name", autoRefreshed = true)
    private String projectName;

    // 2、测试通过spring xml的配置方式,注入到ioc容器中的类的属性,如果使用EL表达式获取naocs上的配置,是否正常
    @Autowired
    private Project project;

    @RequestMapping(value = "/get", method = GET)
    @ResponseBody
    public String get() 
        return projectName;
    

    @RequestMapping(value = "/getProjectName", method = GET)
    @ResponseBody
    public String getProjectName() 
        return project.getProjectName();
    

XMl简单配置注入一个属性为projectName的Project类:

<bean id="project" class="com.bes.bean.Project">
        <property name="projectName" value="$com.cjian.project.name2"></property>
    </bean>

测试1:

测试2:

结束 ,使用@Value注解一样可以拿到nacos上的配置,但不建议这么用~

以上是关于spring接入nacos配置中心的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇

Spring Cloud Alibaba - 03 注册中心Nacos 应用篇(上)

Spring Cloud Alibaba Nacos服务注册和配置中心

微服务配置中心实战:Spring + MyBatis + Druid + Nacos

spring cloud 2020 接入 nacos 2 脚手架

spring cloud 2020 接入 nacos 2 脚手架