1、创建两个工程:nacos-provider、nacos-consumer
创建生产者
略(消费者创建和生产者类似)
最终结构图
2、生产者代码
(1)ProviderController代码如下:
@RestController
public class ProviderController {
@Value("${myName}")
private String name;
@GetMapping("hello")
public String hello(){
return "hello " + name;
}
}
(2)application.yml配置如下:
server:
port: 18070
myName: nacos
(3)生产者注册到Nacos
1》添加依赖
spring-boot-starter-web
spring-cloud-starter-alibaba-nacos-discovery
spring-boot-starter-test
junit-vintage-engine
spring-cloud-dependencies
spring-cloud-alibaba-dependencies
2》在 application.yml 中配置nacos服务地址和应用名
myName: nacos
server:
port: 18070
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3》通过Spring Cloud原生注解 @EnableDiscoveryClient 开启服务注册发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
效果如下:
注意细节:
重启了电脑后,可能会出现Nacos连接不上的情况,原因是电脑ip发生了改变,而Nacos缓存了之前的ip地址.
重启Nacos命令:
cd nacos/bin
sh shutdown.sh
sh startup.sh -m standalone
注意!!! 1.若还不好用,删除data目录后重启电脑! 2.删除data目录有可能会删掉下文"配置中心"配置的文件,所以删除后应确认页面中的配置中心是否需要重新添加!
3、消费端代码
(1)ConsumerController代码
@RestController
public class ConsumerController {
@GetMapping("hi")
public String hi() {
return "hi provider!";
}
}
(2)application.yml
server:
port: 18080
(3)消费者注册到Nacos
1》添加依赖:同生产者
2》在application.yml中配置nacos的服务名及服务地址:同生产者(application:name值由nacos-provider改为nacos-consumer)
3》在引导类(NacosConsumerApplication.java)中添加@EnableDiscoveryClient注解:同生产者
效果如下:
4、使用feign调用服务
1》在nacos-consumer模块的pom.xml文件中 引入依赖
spring-cloud-starter-openfeign
2》在NacosConsumerApplication类上添加@EnableFeignClients注解:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
}
3》编写feignClient
@FeignClient("nacos-provider")
public interface ProviderClient {
@RequestMapping("hello")
public String hello();
}
4》在Controller中使用feignClient
@RestController
public class ConsumerController {
@Autowired
private ProviderClient providerClient;
@GetMapping("hi")
public String hi() {
return providerClient.hello();
}
}



