一、使用openfeig
调用远程另外一个服务接口
-
1、创建一个
spring boot
工程,并且创建2个模块来当微服务模块 -
2、分别配置2个模块的启动文件
-
3、分别两个模块下创建一个测试的控制器
-
4、在项目的根目录的
pom.xml
中添加spring-cloud
配置<properties> <java.version>1.8</java.version> <spring-cloud.version>2021.0.8</spring-cloud.version> </properties>
<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>
-
5、在需要调用别的服务的项目中添加依赖
<!-- 远程调用的包 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> </dependency>
-
6、在需要调用别的 服务的项目中创建一个文件夹
feign
,里面创建一个文件SystemFeignHello.java
的接口package com.example.feign; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @FeignClient(name = "system", url = "http://localhost:9001/system") public interface SystemFeignHello { /** * 别的地方调用hell1方法的时候就会调用http://localhost:9001/system/hello路由 * @return */ @GetMapping("hello") String hello1(); }
-
7、测试调用另外一个服务的接口
package com.example.controller; import com.example.feign.SystemFeignHello; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController public class HelloController { @Resource SystemFeignHello systemFeignHello; @GetMapping("hello") public String hello() { return "File Hello"; } @GetMapping("systemHello") public String getHello() { String helloResult = this.systemFeignHello.hello1(); System.out.println(helloResult+"返回数据"); return helloResult; } }
-
8、在调用服务的启动类上加上扫描注解
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableFeignClients("com.example.feign") public class FileApplication { public static void main(String[] args) { SpringApplication.run(FileApplication.class, args); } }
-
9、网页上测试调用接口
-
10、
system
项目中接口如下,和普通接口没任何区别package com.example.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("hello") public String hello() { return "System Hello11"; } }
二、使用eureka
来服务端配置
-
1、
eureka
分为服务端和客户端,需要在项目中先创建一个eureka
的服务段,在子项目中使用客户端的方式连接 -
2、创建一个
eureka
模块来做服务端 -
3、在
eureka
模块中添加依赖包<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
-
4、配置文件中基本配置
spring.application.name=eureka server.port=8761 eureka.client.fetch-registry=false eureka.client.register-with-eureka=false
-
5、在启动类上添加注解
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
-
6、直接在浏览器上输入
http://localhost:8761/
如下就表示配置成功
三、客户端配置
-
1、引入依赖包
<!-- 客户端端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
2、在配置文件中添加
eurec.client.server-url.defaultZone=http://localhost:8761/eureka/
-
3、在启动文件中添加
@SpringBootApplication @EnableEurekaClient public class SystemApplication { public static void main(String[] args) { SpringApplication.run(SystemApplication.class, args); } }
-
4、刷新浏览器查看服务是否已经注册成功
四、网关的配置
-
1、创建一个网关模块
-
2、在网关中引入依赖包
<dependencies> <!-- 网关依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- 客户端端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies>
-
3、修改配置文件
server.port=8000 spring.application.name=gateway server.servlet.context-path=/gateway spring.main.web-application-type=reactive eurec.client.server-url.defaultZone=http://localhost:8761/eureka/ # 注册一个服务 spring.cloud.gateway.routes[0].id=system spring.cloud.gateway.routes[0].uri.=http://localhost:9001 spring.cloud.gateway.routes[0].predicates[0].name=Path spring.cloud.gateway.routes[0].predicates[0].args[0]=/system/** # 注册一个服务 spring.cloud.gateway.routes[1].id=file spring.cloud.gateway.routes[1].uri.=http://localhost:9000 spring.cloud.gateway.routes[1].predicates[0].name=Path spring.cloud.gateway.routes[1].predicates[0].args[0]=/file/**
-
4、启动文件
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }
-
5、使用网关的地址直接访问别的路由
http://localhost:8000/system/hello