【工作记录】spider-flow使用插件连接并操作mongodb数据库

前言

前面说过,spider-flow有着非常优秀的插件机制,可以通过插件实现功能的扩展。前面有小伙伴问到mongodb的集成使用,本文就来梳理下spider-flow中使用mongodb插件的过程,其实非常简单。

PS:
spider-flow的作者已经实现了一些常用的插件,如redis、mongo、es、ocr等,开发和使用方式类似,再有其他需要可自行扩展。

使用过程

1. 引入依赖

这里提供两种方式:

  • 一种是通过下载源码,本地编译,在spider-flow-web中引入
<dependency><groupId>org.spiderflow</groupId><artifactId>spider-flow-mongo</artifactId>
</dependency>
  • 另外一种是在spider-flow-web中引入下载编译好的jar包

下载插件jar包并放入根目录下的lib目录下,下载地址: 点击下载插件jar包

引入方式略有差异:

<dependency><groupId>org.spiderflow</groupId><artifactId>spider-flow-mongo</artifactId><version>0.5.0.v20231129</version><scope>system</scope><systemPath>${project.basedir}/lib/spider-flow-mongo-0.5.0.v20231129.jar</systemPath>
</dependency>

另外 需要在build的spring-boot-maven-plugin配置中添加配置:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin></plugins><resources><resource><directory>lib</directory><targetPath>/BOOT-INF/lib/</targetPath><includes><include>**/*.jar</include></includes></resource></resources>
</build>

再遇到问题可以先百度,解决不掉的可以留言。

2. spider-flow数据库执行如下sql
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `sp_mongo`;
CREATE TABLE `sp_mongo` (`id` varchar(32) NOT NULL,`name` varchar(64) DEFAULT NULL,`alias` varchar(32) DEFAULT NULL,`host` varchar(64) DEFAULT NULL,`port` int(6) DEFAULT NULL,`database` varchar(64) DEFAULT NULL,`username` varchar(32) DEFAULT NULL,`password` varchar(32) DEFAULT NULL,`create_date` datetime DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 准备mongodb数据源

这个步骤是我自己搭建环境测试的步骤,如果已经有对应数据源,本步骤可忽略。

安装docker并执行如下命令:

docker run -it --restart always --net host --name mongo -d mongo

运行完成后使用如下命令查看日志:

docker logs -f mongo --tail 200

启动成功后执行如下命令进入容器:

docker exec -it mongo mongosh

创建collection及用户并完成用户授权

use aa;
db.createUser({user: 'root', pwd: '123456', roles:[{role:"root",db:"admin"}]})

这样就可以使用root用户访问mongodb的aa数据库了。

其他关于mongodb的使用命令可自行百度完成,也欢迎留言讨论。

4. 启动spider-flow应用

正常启动后进入页面,会看到左侧菜单多出了一个Mongodbs数据源的菜单。

5.页面配置及测试
1. 配置数据源并测试通过

数据源配置及测试

2. 新增、查询测试

数据新增
数据查询

6. 插件已提供的部分语法说明
功能语法示例
新增${mongodb.aliasName.collectionName.insert({key : value})}
新增多条${mongodb.aliasName.collectionName.insert([{key : value},{key : value}])}
编辑${mongodb.aliasName.collectionName.update({key : oldValue},{key : newValue})}
编辑多条${mongodb.aliasName.collectionName.updateMany({key : oldValue},{key : newValue})}
删除${mongodb.aliasName.collectionName.remove({key : value})}
查询${mongodb.aliasName.collectionName.find({key : value}).list()}

源码简说

spiderflow的插件机制设计还是非常优秀的,扩展插件也非常容易。

对应文中mongodb插件代码结构如下:

插件结构

图中红色框起来的部分是为了完成mongodb数据源的增删改查操作的

其余的executor和extension结尾的类才是真正完成功能的。

其中MongoFunctionExecutor.java实现了FunctionExecutor接口,完成的是具体连接mongodb和对mongodb数据进行增删改查的方法,而MongoCollectionExtension.java实现了FunctionExtension接口,完成的是对外也就是爬虫页面上使用到的相关方法。

如果查看过其他插件源码的话,可以发现基本插件实现逻辑都是一致的,关键的接口也就是上面提到的FunctionExecutor接口 和 FunctionExtension接口,有兴趣的可以多研究研究源码,

如果有其他插件开发需求,也可以一起讨论完成,欢迎评论区留言。

总结

整体来说,拆件的使用流程还是非常清晰流畅的,引入依赖->添加相关配置->部署、应用、测试。

作为记录的同时也希望能帮助到需要的朋友。

针对以上内容有任何疑问或者建议,欢迎评论区留言讨论。

创作不易,欢迎一键三连。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞翔的小鸟小游戏

主类 package APP;import 框架.GameFrame;public class GameApp {public static void main(String[] args) {//游戏的入口new GameFrame();} }场景实物 package 框架;import 图导.Constant; import 图导.GameUtil;import java.awt.*; import java.awt.image.BufferedImage; …

C语言——数字金字塔

实现函数输出n行数字金字塔 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void pyramid(int n) {int i,j,k;for (i1; i<n; i){//输出左边空格&#xff0c;空格数为n-i for (j1; j<n-i; j){printf(" "); } //每一行左边空格输完后输出数字&#…

STM32g70开启定时器死机原因

在做低功耗产品时&#xff0c;检查发现由于之前开启了BOOTLOADER升级程序&#xff0c;修改了中断向量FALSH起始地址&#xff0c;只在KEIL TARGET IROM1中修改了&#xff0c; 而忘记在程序文件system_stm32f10x.c里修改中断向量表flash起始地址 system_stm32f10x.c里&#xff0…

8款前端特效动画及源码分享

3D立体数字时钟滚动特效 基于Splitting制作的一款3D立体数字时钟滚动特效&#xff0c;创意感满满&#xff0c;可以下载使用。 预览获取 核心代码 <div class"clock"><span class"cog hours tens" data-splitting>0123456789</span>&l…

智能优化算法应用:基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于鸡群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鸡群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

EZDML基本介绍

一、表结构设计器(EZDML) 这是一个数据库建表的小软件&#xff0c;可快速的进行数据库表结构设计&#xff0c;建立数据模型。类似大家常用的数据库建模工具如PowerDesigner、ERWIN、ER-Studio和Rational-Rose等的超级精简版。 官方下载地址&#xff1a;http://www.ezdml.com/d…

一文教你uni-app开发小程序直播功能,轻松打造专属直播间!

1、微信后台申请插件开通 微信后台 登录微信后台 点击设置中的第三方设置 —> 添加插件 --> 点击小程序直播组件&#xff08;获取AppID&#xff09; 2、微信后台开通直播功能 点击进入直播后台系统 这里就是我们创建的直播功能区域 3、代码中接入直播插件AppID 支持在…

思维导图软件MindNode 5 mac使用场景

MindNode 5 for Mac是一款思维导图软件产品&#xff0c;为用户在灵感启发、思绪整理、记忆协助、项目规划、授课讲演等诸多场景下提升学习和工作效率。通过导图社区和云文件无缝链接用户设备&#xff0c;方便用户随时随地收集灵感和展示文档。 MindNode 5 for Mac应用场景 助力…

【axios】TypeScript实战,结合源码,从0到1教你封装一个axios - 基础封装篇

目录 前言版本环境变量配置引入的类型1、AxiosIntance: axios实例类型2、InternalAxiosRequestConfig: 高版本下AxiosRequestConfig的拓展类型3、AxiosRequestConfig: 请求体配置参数类型4、AxiosError: 错误对象类型5、AxiosResponse: 完整原始响应体类型 目标效果开始封装骨架…

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

目录 说明&#xff1a; 1. 机器人中的坐标变换 tf功能包能干什么&#xff1f; tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明&#xff1a; 1. 本系列学习笔记基于B站&#xff1a;古月居《ROS入门21讲》课程&#xff0c;且使…

KT1404C语音芯片做的板子连接usb到电脑出来空的盘符 怎么处理?

一、问题简介 KT1404C画的板子&#xff0c;连接usb到电脑&#xff0c;出来空的盘符&#xff0c;可以确定KT404C没问题放别的板子OK&#xff0c;就是这个板子不正常&#xff0c;并且芯片5脚的电压输出是3.5v &#xff0c;正常的板子是3.3v&#xff0c;什么问题呢&#xff1f; 问…

数据结构之二叉树与堆以及力扣刷题函数扩展

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 1.前言 2.树 2.1概念 2.2树的相关概念 3.…

Python自动化办公:PDF文件的加密与解密

在本篇文章中&#xff0c;我们将介绍如何使用PyPDF2库对PDF文件进行加密和解密操作。 包括如何给PDF文件添加密码&#xff0c;以及如何从受密码保护的PDF文件中删除密码。 注&#xff1a;删除密码的操作&#xff0c;前提是需要知道密码哦 1. 安装PyPDF2库 首先&#xff0c;…

2023.11.26使用opencv调节图片亮度

2023.11.26使用opencv调节图片亮度 测试一些opencv对图片的处理效果&#xff0c;方法比较简单&#xff0c;找出所有像素点&#xff0c;然后将RGB三色的亮度分别进行调节即可&#xff0c;同类可以进行像素级的处理。测试结果和项目代码如下&#xff1a; 使用OpenCV调节图拍亮…

物理层之码分复用(内含相关例题)

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

数字人透明屏幕的技术原理是什么?

数字人透明屏幕的技术原理主要包括人脸识别和全息影像技术。其中&#xff0c;人脸识别技术是通过摄像头捕捉游客的面部表情和动作&#xff0c;并将其转化为数据指令&#xff0c;以便与数字人物进行互动。而全息影像技术则是利用透明屏幕&#xff0c;通过全息投影的方式将数字人…

基于Java+Vue+uniapp微信小程序商品展示系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

【古月居《ros入门21讲》学习笔记】12_服务端Server的编程实现

目录 说明&#xff1a; 1. 服务模型 说明 2. 实现过程&#xff08;C&#xff09; 创建服务器代码&#xff08;C&#xff09; 配置服务器代码编译规则 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建服务器代码&#xff08;Python&#xff09; 运行效果 说…

解决electron-build打包后运行app报错:cannot find module xxx

现象&#xff1a; 关于这个问题查了很多资料&#xff0c;也问了chatgpt都没有找到答案。 最后只能靠自己了。 于是冷静下来回想一下细节。突然发现了一个特别点。 eletron-builder打包时&#xff0c;强制要求eletron-builder和eletron必须都放在devDependencies 否则&#…

echarts图表滚动条带动页面窗口滚动条的问题

网上搜了很多方法不管用&#xff0c;后来发现每次滚动echarts或者左右滑动echarts下方都会报错&#xff0c;报错提示如下&#xff0c;看看你们的图表是否这样报错&#xff1a; 报错信息如下&#xff1a;Unable to preventDefault inside passive event listener invocation 原…