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上的配置,但不建议这么用~

猜你喜欢

转载自blog.csdn.net/cj_eryue/article/details/129885173