Springboot 内部服务调用方式
作者:Kings菜鸟 发布时间:2023-08-24 00:32:20
标签:Springboot,内部服务,调用
Eureka注册的服务之间互相调用
1.请求方
启动类添加注解,扫描Eureka 中的全部服务
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class LoginServiceApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(LoginServiceApplication.class).web(true).run(args);
}
}
pom.xml 添加包 (版本号 根据实际选择)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
创建接口类
@FeignClient(name="hello-service") //spring service name
public interface FeignVehicle {
@RequestMapping(value="/hello", method = RequestMethod.GET)
@ResponseBody
public List<Map> hello(@RequestParam Map<String,String> params);
}
实现类注入此接口类
@Autowired
FeignVehicle feignVehicle;
使用的时候直接按照正常调用方式即可
Map<String,String> map = new HashMap<String, String>();
feignVehicle.hello(map);
跨服务调用的时候出现token信息取不到,在发送方添加 *
@Configuration
public class FeignConfiguration {
@Bean
public RequestInterceptor requestInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest(); //当前服务token
template.header("Authorization","Bearer " + request.getSession().getId()); //template 接收请求方token
}
};
}
}
2.接收方
请求 启动类
@SpringBootApplication
@EnableEurekaClient
public class HelloServiceApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(HelloServiceApplication.class).web(true).run(args);
}
}
请求Controller
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(value="/hello",method = RequestMethod.GET)
@ResponseBody
public List<Map> hello(@RequestParam Map<String, String> queryParam) {
return null;
}
}
多模块化,服务间调用的坑
问题背景
product
服务作为服务端,提供了一个 对外通信Fegin接口 ProductClient,放在了com.imooc.product.client jar包下order
服务作为客户端,直接引用上面的jar,使用 ProductClient ,启动主类后报下图错误:
解决办法
多模块化时,应该在order主类上添加下面圈出来的注解,这样启动后就能扫描这个包。
来源:https://blog.csdn.net/purple25/article/details/88691740


猜你喜欢
- java类的方法,我特别喜欢《java编程思想》里面的描述,这本书说java类之间的相互通信是通过消息。比如顾客类的对象调用一个eat方法,
- 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901很多的A
- 目录一、集合框架的概述二、集合框架(Java集合可分为Collection 和 Map 两种体系)三、Collection接口中的方法的使用
- JavaWeb项目部署到服务器详细步骤本地准备在eclipse中将项目打成war文件:鼠标右键要部署到服务器上的项目导出项目数据库文件MyS
- 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的
- 在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面。
- 知识准备需要了解POI工具,以及POI对Excel中的对象的封装对应关系。什么是POIApache POI 是用Java编写的免费开源的跨平
- java中的前加加++和后加加++,有很多人搞的很晕,不太明白!今天我举几个例子说明下前++和后++的区别!其实大家只要记住一句话就可以了,
- 本文实例讲述了Java Swing组件编程之JTable表格用法。分享给大家供大家参考,具体如下:表格是GUI编程中使用较多,但也是最麻烦的
- 学习完数组就能用C语言写出的简单小游戏:编译器使用的为VS2013代码分为三个部分1、头文件 game.h2、源文件 game.c 用来存放
- 注意我这里用的是官方最稳定的版本3.7.1,版本之间有个别命令是有差距的!1.zkCli.sh客户端zkCli.sh可以理解成客户端,也可以
- 一、首先我们先大致了解一下什么是多线程。(书上的解释)程序是一段静态的代码,它是应用软件的蓝本。进程是程序的一次动态执行过程,对
- 本文实例讲述了Android编程实现添加低电流提醒功能的方法。分享给大家供大家参考,具体如下:特殊需求,检测电流是否正常。监听如下广播:In
- summarydetail传统的Spring项目会有很多的配置文件,比如我们要使用Redis,一般除了对应的依赖的jar包我们还需要在app
- 本文实例讲述了Android数据持久化之Preferences机制。分享给大家供大家参考,具体如下:在Android中,实现数据持久化有五种
- DataSet 对象是支持 ADO.NET的断开式、分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个D
- 你好,我是小黄,一名独角兽企业的Java开发工程师。感谢茫茫人海中我们能够相遇,俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心
- Spring-boot目的Spring是为了解决企业应用开发的复杂性而创建的,简化开发Spring如何简化开发1.基于POJO的轻量级和最小
- 对于多线程,大家并不陌生,对于如何创建线程也是轻车熟路,对于使用new thread和实现runable接口的方式,不再多说。这篇博文我们介
- 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体