SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)
Eureka-Provider 服務(wù)的提供者
新建一個(gè)服務(wù)提供者項(xiàng)目
1、導(dǎo)入pom文件
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2、在啟動(dòng)類上加注解
@SpringBootApplication
@EnableDiscoveryClient // 這個(gè)注解加不加都可以,因?yàn)镋ureka
public class EurekaProviderApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}
上邊那個(gè)@EnableDiscoverClient 注解加不加都行的原因會(huì)在后邊表名
3、在Eureka-Provider項(xiàng)目中添加一個(gè)簡單的接口
@RestController
public class EurekaProviderController {
@GetMapping("/provider")
public String provider(@RequestParam String aaa){
return "eureka-provider-return" + aaa;
}
}
4、以上配置完成之后啟動(dòng)Eureka-Provider
啟動(dòng)后會(huì)在控制臺(tái)輸出
DiscoveryClient_EUREKA-PROVIDER/192.168.1.4:eureka-provider:8000: registering service...
同時(shí)看localhost:8761 頁面的Instance currently registered 會(huì)多出一條信息
Application AMIs Availability Zones Status
EUREKA-PROVIDER n/a (1) (1) UP (1) - 192.168.1.4:eureka-provider:8000
Eureka-Consumer 服務(wù)的調(diào)用者
調(diào)用者的配置和上邊提供者類似,applicatioin.yml配置修改server.port=8100
1、啟動(dòng)類修改
@SpringBootApplication // 另一個(gè)發(fā)現(xiàn)服務(wù)的注解可以不用謝(SpringCloud版本要在Edgware之后)
public class EurekaConsumerApplication {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(EurekaConsumerApplication.class, args);
}
}
2、編寫一個(gè)調(diào)用接口的類
@RestController
public class EurekaConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/consumer")
@GetMapping("/consumer")
public String consumer(@RequestParam String aaa){
return restTemplate.getForObject("http://EUREKA-PROVIDER/provider?aaa=" + aaa,String.class );
}
}
3、啟動(dòng)服務(wù)調(diào)用者
啟動(dòng)后,調(diào)用調(diào)用者的觸發(fā)地址localhost:8100/consumer?aaa=consumerSemdParamter
瀏覽器顯示內(nèi)容:
eureka-provider-returnconsumerSemdParamter
上邊遺留的一個(gè)問題,eureka-client不加@EnableDiscoveryClient以將自己注冊到注冊中心
先看EurekaClientAutoConfiguration類中
@Configuration
@EnableConfigurationProperties
@ConditionalOnClass(EurekaClientConfig.class)
@Import(DiscoveryClientOptionalArgsConfiguration.class)
@ConditionalOnBean(EurekaDiscoveryClientConfiguration.Marker.class)
@ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true)
@ConditionalOnDiscoveryEnabled
@AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class,
CommonsClientAutoConfiguration.class, ServiceRegistryAutoConfiguration.class })
@AutoConfigureAfter(name = {
"org.springframework.cloud.autoconfigure.RefreshAutoConfiguration",
"org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration",
"org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration" })
public class EurekaClientAutoConfiguration {
}
可以看到該類加載的條件是需要有EurekaDiscoveryClientConfiguration.Maker.class的Bean存在,并且eureka.client.enabled為true,因?yàn)樵撝的J(rèn)為true,所以不需要關(guān)注,因此重要的就是EurekaDiscoveryClientConfiguration.Maker.class這個(gè),而這個(gè)類在Dalston之前的舊版本是不會(huì)自動(dòng)加載的,而在Edgware之后,該類就配置到spring.factories文件中了,改文件中所配置的bean在springboot啟動(dòng)的時(shí)候就會(huì)被加載(所以不需要手動(dòng)配上注冊服務(wù)的注解了,springboot會(huì)自動(dòng)配置)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- springcloud微服務(wù)之Eureka配置詳解
- springCloud服務(wù)注冊Eureka實(shí)現(xiàn)過程圖解
- SpringCloud添加客戶端Eureka Client過程解析
- SpringCloud Eureka自我保護(hù)機(jī)制原理解析
- SpringCloud Eureka搭建的方法步驟
- Spring Cloud搭建eureka過程圖解
- SpringCloud Eureka 服務(wù)注冊實(shí)現(xiàn)過程
- springboot2.0和springcloud Finchley版項(xiàng)目搭建(包含eureka,gateWay,F(xiàn)reign,Hystrix)
- 細(xì)說Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式
- Springcloud Eureka配置及集群代碼實(shí)例
相關(guān)文章
解決java轉(zhuǎn)義json出現(xiàn)\u0000 等亂碼的問題
這篇文章主要介紹了解決java轉(zhuǎn)義json出現(xiàn)\u0000 等亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
java微信掃碼支付模式一線下支付功能實(shí)現(xiàn)
本篇文章主要介紹了JAVA微信掃碼支付模式一線下支付功能實(shí)現(xiàn),具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Java?HashMap中除了死循環(huán)之外的那些問題
這篇文章主要介紹了Java?HashMap中除了死循環(huán)之外的那些問題,這些問題大致可以分為兩類,程序問題和業(yè)務(wù)問題,下面文章我們一個(gè)一個(gè)來看,需要的小伙伴可以參考一下2022-05-05
Spring根據(jù)URL參數(shù)進(jìn)行路由的方法詳解
這篇文章主要給大家介紹了關(guān)于Spring根據(jù)URL參數(shù)進(jìn)行路由的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起來看看吧。2017-12-12

