SpringCloud|SpringCloud : eureka-server
SpringCloud :
eureka服务应用>>>item-app 建造步骤:
一、POM
(继承了父项目Spring-Cloud-ForLearning中的一个依赖,父项目构造见博文:Spring-Cloud-ForLearning):
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR1
pom
import
Spring-Cloud-ForLearning
com.wx
1.0-SNAPSHOT
4.0.0 microservice-item
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
${project.artifactId} org.apache.maven.plugins
maven-resources-plugin
UTF-8
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
UTF-8
二、启动类加注解:@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- forEntity = restTemplate.getForEntity(itemUrl, Item.class,id);
System.out.println("订单系统调用商品服务,result:" + forEntity.getBody().toString());
return forEntity.getBody();
}
【SpringCloud|SpringCloud : eureka-server】截图:
1.服务已注册到eureka
文章图片
2.eureka服务调用
文章图片
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- spring|spring boot项目启动websocket
- Spring|Spring Boot 整合 Activiti6.0.0
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot之ImportSelector