微服务的调用示例
1 修改主机hosts
windows修改主机host方法
win+r 输入:C:\WINDOWS\system32\drivers\etc
用notepad++打开hosts文件
修改文件中的127.0.0.1 为yjhou.com的主机名(yjhou可以随便取)
2 项目结构
好处:若不指定侧继承父工程依赖 若指定侧使用自己依赖 可以有两套存在
maven父工程
- 自身信息(maven坐标)
<artifactId>micro-service</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging></pre>
- parent信息
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
- modules信息
<module>eureka-server</module>
<module>provider-hello</module>
<module>yjhou</module>
<module>consumer-hello</module>
</modules>
- properties信息
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compile.encoding>UTF-8</maven.compile.encoding>
<spring-boot.version>2.3.3.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
-
dependencies(依赖 )
spring-boot-starter-web
spring-boot-test
spring-boot-starter-actuator
lombok
-
dependencyManagement
spring-boot-dependencies
spring-cloud-dependencies
maven子模块
consumer-hello(消费者:也是客户端)
- 首先yml文件需要修改
server:
port: 80 #postman默认的也是80端口
spring:
application:
name: consumer-hello #在Eureka首页展示的是这个name
info:
app:
name: consumer-hello11 #点击跳转后展示的是这个name
eureka:
instance:
hostname: yjhou.com #主机名 一开始通过win+r修改的主机名字
prefer-ip-address: true #是否将当前服务的IP注册到Eureka Server
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:9898/eureka/ #9898是服务端的端口号
-
启动主类(需要加入的注解)
@SpringBootApplication
@EnableDiscoveryClient(客户端都用这个注解 而不使用@EnableEurekaClient)
启动主类中注入RestTemplate(通过@Bean注入 @Resour来调用)
/**
* 创建RestTemplate 示例并通过 @Bean注解注入到IoC容器中
* @return RestTemplate
*/
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
- handler调用
方法作用:路径传参根据id来查询对应的Music
说明: 1方法有参数需要在方法后面指定 同时在getForObject中加上才字段(如果参数很多,则用逗号隔开)
2 yjhou:8003端口号:8003是你调用的生产者那边配置好的端口号
3 postm调用的路径是写在Handler中的路径("/consumer1/{id}")
注解写法(与之前springboot的控制台写法是一样的)
注入restTemplate
方法调用
privider-hello(生产者:也是客户端)