适用版本
Springboot (注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。)和 Spring版本大于等于4.3.20.RELEASE
引入jar包
(1)Springboot项目引入此jar包
<nacos.version>0.2.2</nacos.version>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos.version}</version>
</dependency>
(2)Spring项目引入此jar包
<version.nacos>0.3.0</version.nacos>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>${version.nacos}</version>
</dependency>
环境隔离
可以通过nameSpace 进行环境隔离(区分生产和测试环境)
Code实现
springboot项目配置
(1)yaml配置
##nacos
nacos:
config:
server-addr: http://nacos.cn
##不用的环境nameSpace配置不同
namespace: XXXXXXXX
data-id: com.test
group: testgroup
(2)java代码
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.AbstractListener;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
/**
* nacos
* todo 修改为对应项目的dataId 和 groupId即可
* @author shadow
* nacos配置和监听
*/
@NacosPropertySource(dataId = "com.test", groupId = "testgroup", autoRefreshed = true)
@Configuration
public class NacosConfig {
}
Spring项目配置
web.xml 配置
<context-param>
<param-name>spring.profiles.active</param-name>
<!--环境命名,根据你项目环境命名规则来定-->
<param-value>production</param-value>
</context-param>
代码配置
import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import com.raycloud.bizlogger.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Profile("production") //环境命名
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "http://xxxxx.cn", namespace = "231231-2329319-y7wd72"))
@NacosPropertySource(dataId = "com.test", groupId = "testgroup", autoRefreshed = true)
public class NacosConfig implements InitializingBean {
private static Logger logger = Logger.getLogger(NacosConfig.class);
@Override
public void afterPropertiesSet() {
System.out.println("========Nacos初始化完成========");
logger.debug("========Nacos初始化完成========");
logger.info("========Nacos初始化完成========");
}
}
Nacos使用案列
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Service;
@Service
public class NacosTestService {
@NacosValue(value = "${application.test:{}}", autoRefreshed = true)
private String config;
public String getNacosConfig() {
return config;
}
}