服务注册
首先启动nacos注册中心
不明白的首先下载启动nacos 文档地址
或者看之前的文章
创建springboot项目添加nacos服务 注册依赖
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.4</version>
</dependency>
</dependencies>
创建controller类 实现 CommandLineRunner接口
@RestController
public class ProvideController implements CommandLineRunner {
@NacosInjected
private NamingService namingService;
@Value("${spring.application.name}")
private String applicationName;
@Value("${server.port}")
private Integer serverPort;
@GetMapping(path = "/hello")
public String hello(@RequestParam(name = "name") String name) {
return String.format("%s say hello!", name);
}
@Override
public void run(String... args) throws Exception {
// 通过Naming服务注册实例到注册中心
namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
}
}
配置文件 指定注册中心地址
spring.application.name=provide-service
server.port=9093
nacos.discovery.server-addr=47.104.197.9:8848
启动服务 注册完成
可以到nacos后台管理界面查看服务
服务消费着
创建springboot项目添加nacos服务依赖
pom .xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.4</version>
</dependency>
编写测试controller
@RestController
public class consumerController{
@NacosInjected
private NamingService namingService;
@GetMapping(path = "/world")
public String world(@RequestParam(name = "name") String name) {
// 根据服务名从注册中心获取一个健康的服务实例
Instance instance = null;
try {
instance = namingService.selectOneHealthyInstance("provide-service");
} catch (NacosException e) {
e.printStackTrace();
}
RestTemplate template = new RestTemplate();
String url = String.format("http://%s:%d/hello?name="+name, instance.getIp(), instance.getPort());
String result = template.getForObject(url, String.class);
return String.format("请求URL:%s,响应结果:%s", url, result);
}
}
配置文件 添加注册中心地址
spring.application.name=consume-service
server.port=9094
nacos.discovery.server-addr=47.104.197.9:8848
访问测试如下
创建一个类交由IOC容器管理,实现CommandLineRunner接口,重写run方法,启动后立即执行的逻辑就放在run方法中.
如果要有多个逻辑它们将默认按类名的自然顺序先后执行,用@Order(值)注解,值可以是:1,2,3指定先后顺序
注意:本文归作者所有,未经作者允许,不得转载