我是做性視頻網(wǎng)站懷化seo推廣
快速開(kāi)始 | Spring Cloud Alibaba
參考官方快速開(kāi)始教程寫(xiě)的,主要注意引用的包是否正確。
這里是用的2022.0.0.0-RC2版本的springCloud,所以需要安裝jdk21,參考上一個(gè)文章自行安裝。
nacos-config實(shí)現(xiàn)配置中心功能-CSDN博客
將nacos-config和服務(wù)提供者、消費(fèi)消費(fèi)者整合起來(lái)就是一個(gè)完整的分布式項(xiàng)目了。
服務(wù)提供者
創(chuàng)建項(xiàng)目
nacos-discovery-provider-example
添加依賴
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.13</version><relativePath/> <!-- lookup parent from repository --></parent><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></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0-RC2</version></dependency></dependencies>
修改配置文件
application.properties
如果nacos沒(méi)有開(kāi)啟鑒權(quán),則不需要配置賬號(hào)密碼
spring.cloud.nacos.discovery.namespace=local是用來(lái)做多環(huán)境配置的(本地、開(kāi)發(fā)、測(cè)試、生產(chǎn)),此處可以不配置,添加到啟動(dòng)參數(shù)里面。
spring.application.name=service-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=local
server.port=18082
核心代碼
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDiscoveryProviderExampleApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryProviderExampleApplication.class, args);}}
@RestController
public class EchoController {@GetMapping(value = "/echo/{string}")public String echo(@PathVariable String string) {return string;}
}
啟動(dòng)項(xiàng)目?
可以添加-Dspring.cloud.nacos.config.namespace=local參數(shù)指定啟動(dòng)的環(huán)境
查看nacos注冊(cè)的服務(wù)?
查看服務(wù)列表,顯示服務(wù)已經(jīng)注冊(cè)成功。
服務(wù)消費(fèi)者?
創(chuàng)建項(xiàng)目
nacos-discovery-consumer-example?
添加依賴
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.13</version><relativePath/> <!-- lookup parent from repository --></parent><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></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId><version>4.0.5</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0-RC2</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>4.0.6</version></dependency></dependencies>
修改配置文件
application.properties
如果nacos沒(méi)有開(kāi)啟鑒權(quán),則不需要配置賬號(hào)密碼
spring.cloud.nacos.discovery.namespace=local是用來(lái)做多環(huán)境配置的(本地、開(kāi)發(fā)、測(cè)試、生產(chǎn)),此處可以不配置,添加到啟動(dòng)參數(shù)里面。
spring.application.name=service-consumer
server.port=18083
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=local
spring.cloud.loadbalancer.ribbon.enabled=false
spring.cloud.loadbalancer.nacos.enabled=true
核心代碼
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class NacosDiscoveryConsumerExampleApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryConsumerExampleApplication.class, args);}
}
@FeignClient(name = "service-provider")
public interface EchoService {@GetMapping(value = "/echo/{str}")String echo(@PathVariable("str") String str);
}
@Configuration
public class BeanInit {@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}
這里的rest和feign是接口的兩種調(diào)用方式。
rest直接通過(guò)服務(wù)名和url,使用http的方式調(diào)用。
feign使用service封裝服務(wù),然后以service的方式調(diào)用服務(wù)。
我們自己在生產(chǎn)中使用的rest的方式調(diào)用。?
@RestController
public class TestController {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate EchoService echoService;@GetMapping(value = "/echo-rest/{str}")public String rest(@PathVariable String str) {return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);}@GetMapping(value = "/echo-feign/{str}")public String feign(@PathVariable String str) {return echoService.echo(str);}
}
啟動(dòng)項(xiàng)目?
可以添加-Dspring.cloud.nacos.config.namespace=local參數(shù)指定啟動(dòng)的環(huán)境
調(diào)用接口
http://localhost:18083/echo-rest/abcede
http://localhost:18083/echo-feign/abcd
查看nacos注冊(cè)的服務(wù)
總結(jié)?
看了下官方的demo,直接使用的話有很多jar包缺失或者版本號(hào)沒(méi)有指明。
可以參考他的demo代碼。比較全。
spring-cloud-alibaba/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example at 2022.x · alibaba/spring-cloud-alibaba · GitHub