FeignClient如何通过配置变量调用配置文件url
作者:西楚三少 发布时间:2023-05-07 08:19:25
标签:FeignClient,变量,配置文件,url
通过配置变量调用配置文件url
1.application.yml 配置文件配置参数
feign:
sys: http://127.0.0.1:8777
2.ISysFeignClient.java 使用@FeignClient时配置
@FeignClient(value = "sys",url = "${feign.sys}")
public interface ISysFeignClient {
@GetMapping("/sys/queryPlatMenus")
List<Map<String, Object>> queryPlatMenus();
}
这样部署开发时就可以只需要修改一处yml配置url就可以了。
调用指定的动态URL
1 创建demo1服务
pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.demo</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.3</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-openfeign</artifactId>
</dependency>
<!-- eureka -->
<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>
</project>
application-dev1.yml
server:
port: 8111
spring:
application:
name: ${APPLICATION_NAME:demo1}
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://localhost:18880/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
application-dev2.yml
server:
port: 8112
spring:
application:
name: ${APPLICATION_NAME:demo1}
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://localhost:18880/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
IndexController.java
package com.demo.demo1.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description:
* @author: Evan
* @time: 2021/8/2 17:17
*/
@RestController
public class IndexController {
@Value("${server.port}")
private String port;
@GetMapping("/hello")
public String hello(){
System.out.println("进入" + port + "服务器");
return "返回的端口为:" + port;
}
}
2 创建demo2服务
pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.demo</groupId>
<artifactId>demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.3</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-openfeign</artifactId>
</dependency>
<!-- eureka -->
<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>
</project>
application.yml
server:
port: 8113
spring:
application:
name: ${APPLICATION_NAME:demo2}
eureka:
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://localhost:18880/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port}
prefer-ip-address: true
DemoFeign.java
package com.demo.demo2.Feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.net.URI;
/**
* @description:
* @author: Evan
* @time: 2021/8/2 17:34
*/
//@FeignClient(name = "DEMO1", url="EMPTY")
@FeignClient(name = "DEMO1", url="http://localhost:8111")
public interface DemoFeign {
/**
* 调用demo1的接口
* @return
*/
@RequestMapping(value = "/hello", method = RequestMethod.GET)
String hello();
/**
* 调用demo1的接口
* @return
*/
@RequestMapping(value = "/hello", method = RequestMethod.GET)
String hello1(URI uri);
}
IndexController.java
package com.demo.demo2.controller;
import com.demo.demo2.Feign.DemoFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.net.URI;
/**
* @description:
* @author: Evan
* @time: 2021/8/2 17:33
*/
@RestController
public class IndexController {
@Autowired
private DemoFeign demoFeign;
@GetMapping("/testFeign")
public String testFeign(){
System.out.println("在demo2服务中,调用demo1的服务");
String resultStr = demoFeign.hello();
System.out.println("在demo2服务中,调用demo1的服务,返回的结果:" + resultStr);
return "在demo2服务中,调用demo1的服务,返回的结果:" + resultStr;
}
@GetMapping("/testFeign2")
public String testFeign2(@RequestParam String server) throws Exception{
String url = "";
if("1".equals(server)){
url = "http://localhost:8111";
}else if("2".equals(server)){
url = "http://localhost:8112";
}
System.out.println("在demo2服务中,调用demo1的服务" + url);
String resultStr = demoFeign.hello1(new URI(url));
System.out.println("在demo2服务中,调用demo1的服务,返回的结果:" + resultStr);
return "在demo2服务中,调用demo1的服务,返回的结果:" + resultStr;
}
}
测试
指定服务器ip
http://localhost:8113/testFeign2?server=1
返回【在demo2服务中,调用demo1的服务,返回的结果:返回的端口为:8111】
http://localhost:8113/testFeign2?server=2
返回【在demo2服务中,调用demo1的服务,返回的结果:返回的端口为:8112】
使用默认的地址
http://localhost:8113/testFeign
返回【在demo2服务中,调用demo1的服务,返回的结果:返回的端口为:8111】
来源:https://blog.csdn.net/cai4561/article/details/105699194
0
投稿
猜你喜欢
- 今天就来拿贪吃蛇小游戏来练练手吧!贪吃蛇游戏规则: 1.按下空格键(游戏未结束)则游戏
- 前言首先我们初始化一个最简单的容器,用这个容器研究初始化的流程。下面就是一个再简单不过的IoC容器了,该容器包含了一个名为beanA的bea
- SurfaceViewSurfaceView从源码上看继承自View,但在内部实现上SurfaceView和其他View有很多区别。 Sur
- 一、什么是命令模式命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录
- 本文实例为大家分享了C#图像处理的具体代码,供大家参考,具体内容如下(1)在Form1窗体中的PictureBox1控件中显示通过OpenF
- Java调用Linux系统命令有时候,我们在使用Java做一些操作时,可能性能上并不能达到我们满意的效果,就拿最近工作中的遇到的一个场景来说
- 思路如下:创建一个类,通过extends使其继承窗体类JFrame;创建一个JFrame对象,使用JFrame类的setVisible()方
- gravity与layout_gravity属性在android布局中,我们经常会用到“重心”-gr
- java 抛出异常处理的方法为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理。说的对吗对.1、throws关键字通常被
- 本文实例为大家分享了Java实现多人聊天室的具体代码,供大家参考,具体内容如下先说,记录本人的学习过程,当笔记了多人聊天室分为1.服务器①.
- 本文介绍了Android多渠道打包的方法步骤,分享给大家,具体如下:1.生成签名文件点击 Build -> Generate Sign
- 如下所示:class Program {
- 微信红包的使用已经很广泛,本篇文章介绍了微信发红包的实例,需要有认证的公众号,且开通了微信支付,商户平台且开通了现金红包的权限即可。http
- C# 中同样支持多维数组(也可称为矩形数组),它可以是二维的,也可以是三维的,多维数组中的数据以类似表格(行、列)的形式存储,因此也被称为矩
- 拆分实现流程请看下面这张图首先我们得对线程池进行一个功能拆分Thread Pool 就是我们的线程池,t1,t2,t3代表三个线程Block
- SpringMVC RESTFul访问首页实现一、新建 index.html在 webapp\WEB-INF\templates 下新建首页
- 最近都在忙着写一个网站项目,今天做一个分页功能的时候,遇到了分页效果实现不了的问题,查了好久的资料,后来终于是成功解决啦,记录一下1.在po
- 前言在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。请求转发和请求重定向主要区别,包
- 1.ACSII码加密//ACSII码加密 private static string
- 前文传送门:Netty分布式高性能工具类同线程下回收对象解析异线程回收对象就是创建对象和回收对象不在同一条线程的情况下, 对象回收的逻辑我们