nacos环境搭建和springboot集成

223 阅读1分钟

nacos官网

跟着官网一步一步搭建

报错

1.报java环境问题

rem if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1
rem set "JAVA=%JAVA_HOME%\bin\java.exe"
rem 手工指定java路径
set "JAVA=D:\javaSE1.8\jdk1.8\bin\java.exe"

2.启动失败

错误信息:
rg.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
因为启动默认是集群模式
set MODE="cluster"
修改为下面单机模式
set MODE="standalone"

3.需要登录

地址:http://127.0.0.1:8848/nacos/index.html
默认用户名/密码 nacos/nacos

修改密码:

image.png

spirngboot集成

1.pom引入

 <dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <!-- 注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,
               版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。 -->
    <version>0.2.9</version>
   </dependency>
   
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>0.2.9</version>
   </dependency>   

2.自动注册

spring.application.name=test123

#配置中心
nacos.config.server-addr=127.0.0.1:8848
#命名空间注册中心生成
nacos.config.namespace=8e4ff984-eaec-4ffe-a289-9b8a1395b7de

#自动注册
nacos.discovery.autoRegister=true
#命名空间注册中心生成
nacos.discovery.namespace=8e4ff984-eaec-4ffe-a289-9b8a1395b7de
nacos.discovery.server-addr=127.0.0.1:8848

image.png

效果图

image.png

3.配置

#配置中心
nacos.config.server-addr=127.0.0.1:8848
#命名空间注册中心生成
nacos.config.namespace=8e4ff984-eaec-4ffe-a289-9b8a1395b7de

image.png

注意事项
@NacosPropertySource(dataId = "test", autoRefreshed = true)
指定配置的dataId
如果没有配置nacos.config.namespace 默认是public
                                  指定的时候就是指定的
@SpringBootApplication
@NacosPropertySource(dataId = "test", autoRefreshed = true)
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}
}
	@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
	private boolean useLocalCache;

	@RequestMapping(value = "/test")
	@ResponseBody
	public boolean test() {
		return useLocalCache;
	}

image.png

4.消费

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>0.2.9</version>
   </dependency>
@NacosInjected
private NamingService namingService;
	
@RequestMapping(value = "/consumer-test")
@ResponseBody
public String consumer() throws NacosException {
   // 根据服务名从注册中心获取一个健康的服务实例
   Instance instance = namingService.selectOneHealthyInstance("test123");
   String url = String.format("http://%s:%d/nacos/test", instance.getIp(), instance.getPort());
   String result = restTemplate.getForObject(url, String.class);
   return result;
}

image.png