项目创建
创建父子项目,方便管理项目。
- 首先创建一个springboot项目:springboot-nacos
依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
- 在spring-nacso下新建一个Module:Maven项目:nacos-config-service,在该项目下选择springboot-nacos为父项目
这时springboot-nacos项目pop.xml下会出现
子项目pop.xml会出现
启动配置管理
接下来都是在nacos-config-service操作
第一步:添加依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
第二步:application.yml中配置 Nacos server 的地址:
nacos:
config:
server-addr: 127.0.0.1:8848 #配置nacos服务地址
第三步:控制层获取nacos服务的数据
@RestController
public class NacosConfigController {
//获取nacos服务中配置,键名称msg把值赋值给属性msg,当键值发生改变则自动刷新
@NacosValue(value = "${msg}",autoRefreshed = true)
public String msg;
@RequestMapping(value = "/getMsg")
public String getMsg(){
return msg;
}
}
第四步:启动类
@SpringBootApplication
//配置加载nacos服务器中data-id=test的配置项,修改配置自动刷新,后台服务不需要重启生效
@NacosPropertySource(dataId = "test",autoRefreshed = true)
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class);
}
}
第五步:nacos服务编写数据
启动服务发现
导入依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.3</version>
</dependency>
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
在 application.properties 中配置 Nacos server 的地址:
nacos:
discovery:
server-addr: localhost:8848
控制层
@RestController
public class NacosDiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/getInstance")
public List<Instance> getInstance(String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
启动类
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
通过调用 Nacos Open API 向 Nacos server 注册一个名称为 example 服务
http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8000
接下来调用接口localhost:8080/getInstance?name=example