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


猜你喜欢
- 在Java项目开发中,Maven是我们最常用的依赖管理和构建工具了!我们常常通过添加dependency节点,就能够很方便地加入依赖,而不需
- 一、代码结构:二、数据实体类:using System;using System.Collections.Generic;using Sys
- 使用 ResponseEntity 实现文件上传和下载在 static 下新建一个 img ,并且我放了一张图片在里面,然后重新 maven
- 1. 通过设置采样率压缩res资源图片压缩 decodeResource public Bitmap decodeSampled
- 本文实例为大家分享了java实现简单石头剪刀布游戏的具体代码,供大家参考,具体内容如下问题描述Alice, Bob和Cindy一起玩猜拳的游
- 前几天开发公司项目,有个地方要做一个分数的仪表盘,根据分数跑分,(设计的人估计是看到招商银行App的账号总览)网上好像找不到类似的组件,那就
- 题目一链表题——操作链表根据给定的链表按照指定条件删除其中节点并返回新的头节点具体题目如下解法/**
- 写在前面很久以前就听nice0e3师傅说打Fastjson可以试试C3P0,当时还不会java(虽然现在也没会多少)也就没有深究。最近调试F
- Android绘图操作,通过继承View实现,在onDraw函数中实现绘图。下面是一个简单的例子:public class AndroidT
- 前言在我们的项目中,通常会把数据存储到关系型数据库中,比如Oracle,SQL Server,Mysql等,但是关系型数据库对于并发的支持并
- C#接口的学习,在编程中,我们经常会用到接口,那什么是接口呢?接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接
- Consumer消费者Demo示例<?xml version="1.0" encoding="UTF-8
- 前文传送门:NioSocketChannel注册到selector我们回到AbstractUnsafe的register0()方法:priv
- —学习并使用mybatis-plus的一些高级功能的用法例如: AR模式、 乐观锁 、逻辑删除 、自动填充、数据保护等功能为了方便演示,咱们
- GraalVM安装GraalVM安装安装请前往GraalVM官网 下载 GraalVM Community 22.3,注意当前支持的Spri
- 前言本文章主要从spring security安全认证登录内部调用流程来流程分析登录过程。一、登录时序图时序原图二、配置与代码1.引入库po
- 一、RatingBar简单介绍RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定
- 本文实例为大家分享了Java实现颜色渐变效果的具体代码,供大家参考,具体内容如下RGB色彩,在自然界中肉眼所能看到的任何色彩都可以由红(R)
- C#事件sender的小用法开WPF新坑了,看了WPF的炫酷界面,再看看winForm实在是有些惨不忍睹(逃)。后面会开始写一些短的学习笔记
- 0 写在前面相信用过相机的同学都知道虚化特效,这是一种使焦点聚集在拍摄主题上,让背景变得朦胧的效果,例如本文最后实现的背景虚化效果相机虚化特