SpringCloud :
eureka服務應用>>>item-app
建造步驟:
一、POM
(繼承了父項目Spring-Cloud-ForLearning中的一個依賴,父項目構造見博文:Spring-Cloud-ForLearning):
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>Spring-Cloud-ForLearning</artifactId>
<groupId>com.wx</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>microservice-item</artifactId>
<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>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 資源文件拷貝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
二、啓動類加註解:@EnableEurekaClient
三、application.yml
server:
port: 8081
#應用名稱
spring:
application:
name: app-item
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
###因爲該應用爲服務提供者,是eureka的一個客戶端,需要註冊到註冊中心
register-with-eureka: true
###是否需要從eureka上檢索服務
fetch-registry: true
四、項目結構:
五、服務調用
1.不經過eureka
可使用httpClient/resttemplate等等直接調用url( http://localhost:8081/item/1 )獲取結果
注:這裏的url寫活的方法:
1)配在application.yml中
例如:
myspcloud:
item:
url: http://localhost:8081/item/
然後
@Value("${myspcloud.item.url}")
private String itemUrl;
2)配在application.yml中
例如:
myspcloud:
item:
url: http://localhost:8081/item/
然後新建類:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="myspcloud.item")
public class ItemProperties {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
然後 itemProperties.getUrl()
2.使用eureka負載均衡服務 調用
1)在生產Bean: restTemplate的方法上添加註解:
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
2)調用的url及方法就變成了:
public Item queryItemById2(Long id) {
// 該方法走eureka註冊中心調用(去註冊中心根據app-item(item註冊的服務名,在item的application.yml中配置)查找服務,這種方式必須先開啓負載均衡@LoadBalanced)
String itemUrl = "http://app-item/item/{id}";
ResponseEntity<Item> forEntity = restTemplate.getForEntity(itemUrl, Item.class,id);
System.out.println("訂單系統調用商品服務,result:" + forEntity.getBody().toString());
return forEntity.getBody();
}
截圖:
1.服務已註冊到eureka
2.eureka服務調用