
服务端
startup.cmd -m standalonestartup.cmd -m cluster客户端
引入依赖
properties
主启动类加注解
```java @SpringBootApplication @EnableDiscoveryClient public class NacosClientApplication {
public static void main(String[] args) {
SpringApplication.run(NacosClientApplication.class,args); } } ```
配置文件
```java server.port=9600
spring.application.name=user
spring.cloud.nacos.server-addr=localhost:8848 ```
准备配置文件

引入依赖
```properties com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ```
主启动类
```java @SpringBootApplication @EnableDiscoveryClient public class ConfigClientApplication {
public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class,args); } } ```
预定义配置,bootstrap.properties,如果配置中心和项目中的配置文件都配了相同属性,以配置中心为主
方式一:
```properties
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=2ce4b2b1-d4f3-4667-91aa-803d5088c1f0
spring.cloud.nacos.config.group=users
spring.cloud.nacos.config.name=myconfig.、properties ```
方式二:
yaml spring: application: name: ruoyi-system profiles: active: dev cloud: nacos: discovery: server-addr: localhost:8846,localhost:8847,localhost:8848 config: server-addr: localhost:8846,localhost:8847,localhost:8848 file-extension: yaml shared-configs: # 共享配置 - application-dev.yaml
编写controller,读取配置文件测试
```java @RestController @Slf4j @RefreshScope // 自动刷新配置 public class ConfigController {
@Value("${customer.username}") private String username; // 注入配置文件的属性值
@GetMapping("/demo") public String say(){ return "ok:"+username; } } ```
注意:
消费者和提供者的命名空间必须相同才能调用,命名空间会将服务完全隔离
调用端
引入依赖
```properties org.springframework.cloud spring-cloud-starter-openfeign
org.springframework.cloud spring-cloud-starter-loadbalancer ```
入口类加注解,开启Feign支持
```java @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class CategoryApplication { public static void main(String[] args) { SpringApplication.run(CategoryApplication.class,args); }
} ```
创建一个服务调用接口
```java @FeignClient(value = "product") // 被调用服务名称 public interface ProductClient {
@GetMapping("/product") // 要调用服务的接口 public String product();
} ```
controller中使用
```java @RestController public class UserController {
@Autowired private ProductClient productClient;
@GetMapping("/service") public String find(){ return productClient.product(); // 调用远程服务 } } ```
被调用端
```java @Slf4j @RestController public class ProductController {
- @GetMapping("/product")
- public String product(){
- return "product ok";
- }
} ```
Feign在进行服务调用时,要求服务提供方必须在1s内返回,如果超过1s没有返回则直接报错
```properties feign.client.config.PRODUCTS.connectTimeout=5000 #配置指定服务连接超时 feign.client.config.PRODUCTS.readTimeout=5000 #配置指定服务等待超时
```