Java项目开发中第三方系统整合的技巧总结,如果有人早点告诉我就好了!!

Java Web项目开发流程 1.Web项目开发流程图解 2.Web项目开发的细节(转载) 任何一个项目或者系统开发之前都需要定制一个开发约定和规则,这样有利于项目的整体风格统一、代码维护和扩展。由于Web项目开发的分散性、独立性、整合的交互性等,所以定制一套完整的约定和规则显得尤为重要。本文档将定制一系列约定和规则,他们分别包括组件团队、文件夹命名规则、文件名命名规则、程序代码编程风格、数据库设计约定... 阅读详情

0 前言

大型项目往往不是一家企业独立就能完成,而做好第三方系统整合就显得尤为关键.但这个过程往往不是一帆风顺的,经常会遇到各种各样的问题.有缘能看到这篇博客的话,希望下面的内容可以帮到你.

1 常用请求方式

值得注意的是,以下代码主要适用于SpringCloud框架

1.1 Feign对接第三方系统

@FeignClient(name = "Client", url = "${xx.xx.url:http://192.168.30.10:443}",
        fallback = Fallback.class, decode404 = true)
public interface Client {
    @PostMapping(value = "/sdk_service/rest/videoanalysis/peoplefaces/v1.5", consumes =
            {MediaType.APPLICATION_XML_VALUE}, produces = MediaType.APPLICATION_XML_VALUE)
    String searchFromVpass(@RequestBody String faceSearchRequestDto);
}    

@Slf4j
public class Fallback implements Client {
    @Override
    public String searchFromVpass(String faceSearchRequestDto) {
        log.info("进入熔断器");
        return "null";
    }
}

2 代码调试技巧

当你写好代码之后,很可能出现无法在本机直接调试的情况.比如说第三方系统只能通过摆渡机才能访问,而摆渡机上面往往都不会装IDE.虽然无法直接在摆渡机看到代码的运行过程,但这并不意味着无法把握代码的运行过程.

2.1 调试请求方式

  1. 前端直接请求
  2. Postman进行请求
  3. 在线接口文档请求(比如swagger)

2.2 查看响应结果

  1. Postman或在线接口文档可以直接查看响应结果:调整响应结果解析方式
  2. 前端请求通过查看日志信息来观察运行过程,命令tail -500f nohup.log,其意义为:已追加方式查看日志最后500行,即查看最近500条日志信息

2.3 有效实践

  1. 调整接口参数,采用Postman或在线文档:由于文档往往没有那么详细,所以需要通过这种方式摸索有效的入参形式
  2. 定位问题或者调整配置,往往需要查看日志信息才可以
  3. 避免重复打包,可以将关键信息写入配置文件中:好处在于,通过vi改一下配置文件就可以实现代码的另一种运行方式,而不用再本地修改代码并重新构建jar包.如果你有过用U盘拷jar包到客户环境中运行的经历,你就知道我在说什么东西,有什么意义.应该放入配置文件的信息为:第三方系统URL等
  4. 写好日志,第三系统请求参数,响应结果以及关键的判断等信息应当写入日志.让人通过观察日志便可以知道代码运行到了哪里,问题发生在哪里.入参也可以被复制到Postman进行验证等.

3 构建假数据

第三方对接过程中,对方接口往往有这样或那样的问题导致无法正常对接,然后你苦苦等第三方,而前端又苦苦等你?显然,如果你可以知道第三方系统的响应格式,那么完全可以直接新建一个springboot项目来模拟第三方接口.只需要把URL换成假数据springboot的URL就可以完成.
通过构建假数据,可以快速完成后端与前端的联调,提高开发效率.接下来说一下具体做法:

  1. 新建springboot项目
  2. controller层中的mapping保持与第三方系统一致
  3. 响应结果直接读取资源目录下的json文件或xml文件:资源文件直接复制响应结果即可
    @RestController
    @RequestMapping("/*")
    public class XmlController {
        @PostMapping(value = "/sdk_service/rest/facematch/1v1")
        public String oneToOneCompare(@RequestBody String xml) throws IOException {
            File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX+ "data/xml/oneToOneCompare.xml");
            return IOUtils.toString(new FileInputStream(file), String.valueOf(StandardCharsets.UTF_8));
        }
    }
    
实验四 SSM整合项目开发 1. 掌握Spring框架的依赖注入和面向切面编程两大核心功能。 2. 了解Spring的底层原理掌握Spring整合MyBatis Plus的使用。 3. 掌握Spring MVC框架的工作原理、框架配置、控制器/方法的编写。 4. 掌握Spring MVC字符编码过滤器、文件上传与下载的使用。 5. 掌握SSM整合项目的创建及基于XML配置使用。 6. 掌握SSM整合项目基于注解配置类并使用内嵌Tomcat的用法。 阅读详情

相关推荐

Java Web开发SSH框架整合实战项目

SSH(Struts + Spring + Hibernate)作为Java Web开发的经典三层架构整合方案,凭借其清晰的职责划分和良好的解耦设计,广泛应用于企业级应用开发中。其中,Struts负责表现层的请求处理与页面跳转,Spring管理业务逻辑层的依赖注入与事务控制,Hibernate则实现数据持久化操作。三者协同工作,提升了系统的可维护性与可扩展性。相较于传统的Servlet + JSP + DAO开发模式,SSH整合在代码结构、事务控制、对象关系映射等方面具有显著优势。

weixin_36059856的博客 832

java全链路监控_Java 全链路监控系统整合业务系统如何高可用 _好机友

参照zinpkin全链路监控系统的弊端:监控系统收集器,通过集成SpringBoot插件,耦合侵入业务,和应用部署在同一个jvm中,影响洪峰下的业务系统的高可用性。高可用设计方案:保障高可用必须牺牲一致性目前全链路架构方案的改进:方案:将影响业务性能的模块和应用解耦,以java agent和应用部署在同一台服务器上,保证进程隔离。搜集器单独部署,业务侵入以java agent方式侵入。优点:对业务...

weixin_28945799的博客 362

Java Web项目SSM整合开发毕业设计源码包(30套)

在当今以技术驱动创新的IT行业,Java Web项目开发已成为企业构建动态交互式网站和企业级应用不可或缺的一环。Java Web项目通常包含复杂的源码整合、框架对接及前后端的交互,这些都需要开发者具备深厚的技术功底和全局的视角。开发一个优秀的Java Web项目不仅仅需要对源码的深度理解,还需要了解如何将项目中的各个部分有效地整合起来。在项目开发的早期阶段,合理规划源码结构与整合方式,对项目后期的维护和扩展有着深远的影响。

weixin_42168902的博客 737

java如何集成其他系统_embedconfig: 一个嵌入式的在线配置系统,和其他分布式配置中心不一样的是,它使用一个servlet的方式集成到javaWeb项目里面,无需中心的配置服务即可实现配置...

embedconfig项目介绍一个嵌入式的在线配置系统,和其他分布式配置中心不一样的是,它使用一个servlet的方式集成到javaWeb项目里面,无需中心的配置服务即可实现配置文件热发。他适合给独立分发的各种javaWeb系统提供在线配置的能力,当然我也会在后续考虑如何集成集中式配置中心的实现以及如何无缝切换软件架构软件架构说明安装教程1. 引入项目依赖(通过maven或者gradle)com....

weixin_28871743的博客 431

Java SSM框架整合完整示例项目

SSM(Spring、Spring MVC、MyBatis)框架整合是当前企业级Java Web开发中广泛采用的技术栈。Spring提供了全面的编程模型支持,特别是IoC(控制反转)与AOP(面向切面编程)机制;Spring MVC作为MVC架构的实现,负责Web层的请求处理;MyBatis则以其灵活的SQL映射机制替代了传统的JDBC操作,提升了数据访问层的开发效率。三者整合后,能够实现高内聚、低耦合的系统架构,具备良好的可维护性与扩展性,特别适合中大型项目的开发。

weixin_42602726的博客 753

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 337

Java 提供给第三方使用接口方法

相信有很多小伙伴,在日常的开发中都有遇到过需要调用第三方接口的需求吧,但是自己有没有写过接口提供给第三方使用呢,常规的都是我们调用别人的接口,但是自己需要开发接口提供给第三方使用的场景应该不是很多,很多小伙伴可能会想不就开发一个接口对外开放嘛岂不是很简单,但是在开发接口对外开放,我们需要考虑一个问题,没有限制条件,那岂不是太不安全了,谁都可以调我这个接口了啊。所以接下来的就是我们需要考虑的问题了,在开发接口的时候就要考虑到安全性的问题,那么应该如何去解决这个问题呢?

jcc4261的博客 4369

汽车车牌识别系统实现(二)--车牌定位+代码实现

汽车车牌识别系统实现(二)-- 车牌定位 前言 本人大四计算机视觉处理方面菜鸟一枚,因个人兴趣和毕设的缘故,故而想学习计算机视觉方面的内容,有不正确的地方还等各位大神批评指正。 图像预处理 照相机获取到汽车车牌图像时,绝大多数情况下,图像里只存在一个车牌的情况是不太现实的,一幅图像里存在建筑物、树、其它汽车等等是很正常的;而且绝大多数都会存在噪声点,这种情况下就会对车牌定位和识别造成极大程度的干扰...

奋斗の博客 1万+

Java第三方系统对接

在Java中对接第三方系统通常指的是与外部API、Web服务、数据库或其他系统进行通信。

m0_46401054的博客 1251

使用python对创芯科技CANalyst-II分析仪进行二次开发(详细教程)

使用python对创芯科技CANalyst-II分析仪进行二次开发

ningqingzy的博客 1万+

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

Java面试:Spring容器如何解决循环依赖的原理

什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。 普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题。 如何控制呢?就是设置一个各个线程都能看的见的标志。然后,每个线程想访问临界区域时,都要先查看标志,如果标志没有被占用,则说明目前没有线程在访问临界区域。如果标志被占用了,则说明目前有线程正在访问临界区域,则当前线程需要等待。 这个标志,就是锁。 在单机多线程的java程序中,我们可

m0_56835488的博客 194

微信小程序 - 详解苹果ios手机请求不到数据访问不了接口,但安卓却可以正常访问。wx.request苹果手机IOS请求失败、安卓可以请求成功(微信小程序上线后苹果手机不能访问接口,网络请求失败排查)

微信小程序上线后,苹果手机请求不到数据,安卓可以,微信小程序,安卓可以调接口,苹果调不了的解决方案,微信小程序:IOS访问不了接口,安卓可以正常访问,微信小程序ios版本连接不了服务器,小程序Android可以请求,ios请求失败wx.request,成功上线的小程序,安卓机可以正常访问使用,苹果微信小程序不执行请求,苹果系统无法加载数据,微信小程序 iOS 网络失败,微信小程序接口请求在ios端报错,苹果手机真机调试微信小程序出现网络请求失败,微信小程序 安卓正常 ios调接口显示网络请求失败,微信小程序

🏆 前端领域优质创作者 4371

Java实现从第三方系统单点登录到致远OA

因公司需要,要开发致远OA的SSO插件. (版本:A8集团版) 具体实现方法如下: 第一步:打开致远安装目录 /A8/apache/conf/目录,找到SeeyonConfig.sh 货SeeyonConfig.cmd命令(具体看A8所在系统的类型Linux/Windows).打开后出现如下界面: 修改红色方框圈中的条目,填写上外部访问地址URL 2.开始制作插件,新建Java类实现SSOLoginHandshakeAbstract 类,重写方法 handshake 和 logoutN..

FZ_9426的博客 6630

知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通。我们从文本数据中采集到关键信息,并抽取出其中的关系信息,然后在存入图数据库中,整个过程实现自动化,我这里将举一个文本例子进行抽取。 对于知识图谱的构建是将实体、概念和它们之间的关系都以图表形式呈现出来的一种数据结构。要构建一个知识图谱,需要从不同的数据源中采集到相关信息,并将这些信息整合在一起,最终形成一个全面而且精确的知识图谱。

微学AI的博客 2545

[Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 2万+

2024年【FastDFS】如何整合FastDFS到项目中?其实很简单!!,Java开发岗还不会这些问题

每年转战互联网行业的人很多,说白了也是冲着高薪去的,不管你是即将步入这个行业还是想转行,学习是必不可少的。作为一个Java开发,学习成了日常生活的一部分,不学习你就会被这个行业淘汰,这也是这个行业残酷的现实。如果你对Java感兴趣,想要转行改变自己,那就要趁着机遇行动起来。或许,这份能够对你有所帮助。我们在IDEA中创建一个Maven项目,并在pom.xml文件中引入SpringBoot相关依赖和我们自己编译的FastDFS的Java客户端。最终,pom.xml文件的依赖如下所示。truelog。

2401_84102759的博客 767

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4013

Java Web开发:Spring Boot整合MyBatis实现企业级项目开发

解压后的项目目录结构如下:├── src│ ├── main│ └── test│ └── java│ └── comsrc/main/java:存放项目的 Java 源代码,按照功能模块划分不同的包,如controller用于存放控制器类,mapper用于存放 MyBatis 的映射器接口,service用于存放业务逻辑层类,entity用于存放实体类。

数字魔方操控师的博客 1092

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringBoot整合RocketMQ对接第三方系统

当然,如果想要实现多个消费者的消费,那么我们就可以通过@RocketMQMessageListener注解配置多个消费者去监听不同的Topic,通过不同的Topic来实现对于不同业务系统的对接。

Sgfcgg的博客 358

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java Web项目源码整合开发大合集

以都市供求信息网、物流配货网、编程爱好者博客地带、明日知道、天下淘网络商城、成长在线考试网、企业物资管理系统、办公自动化管理系统、校园管理系统、高校学生选课系统、网络购物中心、博研图书馆管理系统、讯友网络相册、企业门户网站、芝麻开门博客网、进销存管理系统、网上淘书吧、新奥家电连锁网络系统、大学生就业求职网、华奥汽车销售集团网站、科研成果申报管理系统等21个实际项目开发程序为案例,从软件工程的角度出发,按照项目的开发顺序,系统、全面地介绍了程序的开发流程。从开发背景、需求分析、系统功能分析、数据库分析、数据库

琅枫的博客 3521

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

7个超级高效Java开发人员的习惯,网友:为什么不早点告诉我?

上周,我们调查了我们的内部团队,他们提供了令人难以置信的高效Java开发人员,他们可以提供最好的建议,提示和技巧。小编从事在线教育多年,将自己的资料整合建了一个QQ群,对于有兴趣一起交流学习java的可以加群:732976516,里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步! 对于一个小团队,他们拥有153年的Java专业经验,因此他们知道他们在谈论什么!这...

weixin_43923408的博客 211

【Java】SSM整合

/描述统一格式中的数据//描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败//描述统一格式中的消息,可选属性//同学们自己添加getter、setter、toString()方法Result类中的字段并不是固定的,可以根据需要自行增减程序开发过程中不可避免的会遇到异常现象,我们不能让用户看到这样的页面数据出现异常现象的常见位置与常见诱因如下:框架内部抛出的异常:因使用不合规导致数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时)

Sudo_Wang的学习记录 1292

浅谈PHP与Java之Web开发整合技术

 淺談PHP與Java之Web開發整合技術   鄭哲聖郑哲圣 <br />前言 PHP為語法簡單的腳本語言,可以做為HTML的嵌入型語言,而且與Apache網頁伺服器搭配的設定容易、效能亦高。前言 PHP为语法简单的脚本语言,可以做为HTML的嵌入型语言,而且与Apache网页伺服器搭配的设定容易、效能亦高。Java則是商業用途的優秀物件導向語言,具有非常多有用的程式庫,也有許多Web應用程式開發框架(framework)。 Java则是商业用途的优秀物件导向语言,具有非常多有用的程式库,也有许多Web应用

FG2006的专栏 8411

《Java项目开发案例整合》

《Java项目开发案例整合》 开发背景 系统分析 需求分析 可行性分析 系统设计 系统目标 系统功能结构 系统预览 数据库设计 数据库概要说明 数据库逻辑设计 公共模块设计 登陆模块,主窗体模块设计等

Jason的专栏 7083

Java maven项目整合Redis

1、为什么要使用Redis? Redis是一个key-value存储系统。主要用于解决分布式系统中的多台主从机之间的数据同步和共享问题。 2、Redis有哪些特点? 1)、redis的数据完全存储在内存中,使用磁盘只用于持久性,所以redis的速度非常快; 2)、相比许多键值存储系统,redis拥有较为丰富的数据类型; 3)、redis的操作都是原子性的,所以在异步的时候也是安全的;

ZK_小小世界的专栏 1万+
上一篇: SSM框架整合遇到的坑
下一篇: Docker常用命令,最近不常用的命令就老忘,只剩下这么几个命令了
一步一结
博客等级 码龄7年 50粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值