当前位置: 首页 > news >正文

使用Spring的getBeansOfType实现接口多实现类的动态调用

使用Spring的getBeansOfType实现接口多实现类的动态调用

package com.xxl.job.admin.core.alarm;import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.admin.core.model.XxlJobLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;
import java.util.Map;@Component
public class JobAlarmer implements ApplicationContextAware, InitializingBean {private static Logger logger = LoggerFactory.getLogger(JobAlarmer.class);private ApplicationContext applicationContext;private List<JobAlarm> jobAlarmList;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}@Overridepublic void afterPropertiesSet() throws Exception {Map<String, JobAlarm> serviceBeanMap = applicationContext.getBeansOfType(JobAlarm.class);if (serviceBeanMap != null && serviceBeanMap.size() > 0) {jobAlarmList = new ArrayList<JobAlarm>(serviceBeanMap.values());}}/*** job alarm** @param info* @param jobLog* @return*/public boolean alarm(XxlJobInfo info, XxlJobLog jobLog) {boolean result = false;if (jobAlarmList!=null && jobAlarmList.size()>0) {result = true;  // success means all-successfor (JobAlarm alarm: jobAlarmList) {boolean resultItem = false;try {resultItem = alarm.doAlarm(info, jobLog);} catch (Exception e) {logger.error(e.getMessage(), e);}if (!resultItem) {result = false;}}}return result;}}

相关文章:

使用Spring的getBeansOfType实现接口多实现类的动态调用

使用Spring的getBeansOfType实现接口多实现类的动态调用 package com.xxl.job.admin.core.alarm;import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.model.XxlJobLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sp…...

(笔记三)opencv图像基础操作

强调&#xff1a;本文只为学习记录做笔记 详细可参考opencv官网 &#xff1a;https://docs.opencv.org/4.1.1/d0/d86/tutorial_py_image_arithmetics.html &#xff08;1&#xff09;将cv2的BGR模式改为RGB模式 #!/usr/bin/env python # -*- coding:utf-8 -*- ""&q…...

PHP入门及环境搭建 - XAMPP

文章目录 PHP简介搭建PHP环境(XAMPP)下载XAMPP安装XAMPP第1步:双击setup_xampp.bat检测第2步:启动Apache和MySQL第3步:浏览器访问内置的启动页面readme文档 - 必读运行Hello World程序下载并安装Eclipse for PHP编写Hello World程序参考目标: 1、了解PHP语言 2、搭建PHP开…...

开学季ipad手写笔什么牌子好?第三方电容笔推荐

自从ipad之类的平板电脑上出现了电容笔&#xff0c;电容笔就成功的取代了我们的手指&#xff0c;大大加快了我们的写作速度。不过&#xff0c;由于苹果pencil自带的先进芯片&#xff0c;导致其售价一直很高&#xff0c;给很多人&#xff0c;特别是学生&#xff0c;造成了很大的…...

【力扣】62. 不同路径 <动态规划>

【力扣】62. 不同路径 一个机器人位于一个 m m m x n n n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。问总共有多少条…...

【Python小项目】Python的GUI库Tkinter实现随机点名工具或抽奖工具并封装成.exe可执行文件

文章目录 一、项目背景二、需求分析UI界面设计如下:具体需求如下:二、实现思路三、项目关键代码读取excel中的人员名单实现随机滚动抽取主函数中Tkinter的界面相关操作实现窗口相关背景图设置组件相关完整代码四、将程序封装成.exe可执行文件将代码转换成.py文件五、总结与拓…...

【MySql】mysql之基础语句

一、常用的数据类型 类型解释举例int整型用于定义整数类型的数据&#xff08;1、2、3、4、5…&#xff09;float单精度浮点&#xff08;4字节32位&#xff09;准确表示小数点后六位double双精度浮点&#xff08;8字节64位&#xff09;小数位更多&#xff0c;更精确char固定长度…...

使用API调用获取商品数据的完整方案

在电子商务应用程序中&#xff0c;商品详情接口是不可或缺的一部分。它用于从电商平台或自己的数据库中获取商品数据&#xff0c;并将其提供给应用程序的其他部分使用。本文将详细介绍如何设计一个完整的商品详情接口方案&#xff0c;其中包括使用API调用来获取商品数据的过程。…...

来看看入门级别的室内设计创意是怎么样构成的

在这个世界上&#xff0c;信息源源不断地输送给我们&#xff0c;数字通信成为常态&#xff0c;对话的艺术正在逐渐消失&#xff1b;衡量一个人社交成功与否的最佳标准变为点赞数、粉丝数和高参与率&#xff1b;Ai人工智能引发了更快节奏的工作流程&#xff0c;工作要求越来越高…...

Go 面向对象(匿名字段)

概述 严格意义上说&#xff0c;GO语言中没有类(class)的概念,但是我们可以将结构体比作为类&#xff0c;因为在结构体中可以添加属性&#xff08;成员&#xff09;&#xff0c;方法&#xff08;函数&#xff09;。 面向对象编程的好处比较多&#xff0c;我们先来说一下“继承…...

生成式AI,赋能数字劳动力的关键工具

人们认为&#xff0c;生成式人工智能是一种可以让他们用自己的话来提问或生成副本和图像的工具。事实也是如此&#xff0c;人工智能在这两方面上都做的非常好&#xff0c;但让人意想不到的是&#xff0c;它还蕴含着改变我们个人和专业工作的巨大潜力&#xff0c;能帮我们访问、…...

python提取邮件的附件,以excel为例

配置邮箱、读取基本的邮件内容请参考&#xff1a;python读取并解析邮箱邮件&#xff0c;读取邮件主题、内容、时间 以excel为例&#xff1a; 获取邮件&#xff1a; email_value_config {imap_server: imap.exmail.qq.com, username: xxxxxxxx.com, password: xxxxx, }# 连接…...

ZooKeeper技术内幕

文章目录 1、系统模型1.1、数据模型1.2、节点特性1.2.1、节点类型 1.3、版本——保证分布式数据原子性操作1.4、 Watcher——数据变更的通知1.5、ACL——保障数据的安全1.5.1、权限模式&#xff1a;Scheme1.5.2、授权对象&#xff1a;ID1.5.3、权限扩展体系 2、序列化与协议2.1…...

乱糟糟的YOLOv8-detect和pose训练自己的数据集

时代在进步&#xff0c;yolo在进步&#xff0c;我还在踏步&#xff0c;v8我浅搞了一下detect和pose&#xff0c;记录一下&#xff0c;我还是要吐槽一下&#xff0c;为啥子这个模型就放在了这个文件深处&#xff0c;如图。 以下教程只应用于直接应用yolov8&#xff0c;不修改。…...

【Nginx】Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解

$remote_addr 代表客户端IP。注意&#xff0c;这里的客户端指的是直接请求Nginx的客户端&#xff0c;非间接请求的客户端。假设用户请求过程如下&#xff1a; 用户客户端--发送请求->Nginx1 --转发请求-->Nginx2->后端服务器那么&#xff0c;默认情况下&#xff0c;…...

MySQL自动删除binlog日志

MySQL的二进制日志&#xff08;binlog&#xff09;是MySQL用于复制和恢复操作的日志。随着时间的推移&#xff0c;binlog文件可能会快速增长并占用大量的磁盘空间。为了避免磁盘空间耗尽&#xff0c;您可以配置MySQL自动删除旧的binlog文件。 以下是自动删除binlog文件的方法&…...

C++ 文件和流

iostream 标准库提供了 cin 和 cout 方法&#xff0c;用于从标准输入读取流和向标准输出写入流。而从文件中读取流或向文件写入流&#xff0c;需要用到fstream标准库。在 C 中进行文件处理时&#xff0c;须在源代码文件中包含头文件 <iostream> 和 <fstream>。fstr…...

案例分享:西河水库安全监测信息化系统实施方案

一、项目概述1.1项目背景西河水库信息化工作已开展多年&#xff0c;但是由于西河水库监测设备都已经老化或者损坏&#xff0c;现有设备已渐渐不能满足新时期西河水库信息化和现代化发展需求。因此&#xff0c;灌区管理局拟在运用现代信息和通信技术手段感测、分析、整合水库运行…...

使用Angular和MongoDB来构建具有登录功能的博客应用程序

Angular 是一个一站式框架&#xff0c;用于使用相同的可重用代码创建移动和 Web 应用程序。使用 Angular&#xff0c;您可以将整个应用程序划分为可重用的组件&#xff0c;从而更轻松地维护和重用代码。 在本教程系列中&#xff0c;您将学习如何开始使用 Angular 和 MongoDB 作…...

ChatGPT 与前端技术实现制作大屏可视化

像这样的综合案例实分析,我们可以提供案例,维度与指标数据,让ChatGPT与AIGC 帮写出完整代码,并进行一个2行2列的布局设置。 数据与指令如下: 商品名称 销量 目标 完成率 可乐 479 600 79.83% 雪碧 324 600 54.00% 红茶 379 600 63.…...

【正式 v 2.7.5 版本】Windows 系统 Open Claw 搭建使用教程

✨ 核心亮点 零代码门槛&#xff5c;全程可视化&#xff5c;无需手动配环境&#xff5c;内置所有依赖&#xff5c;28 万 Tokens 额度 &#x1f517; 下载地址 https://xiake.yun/api/download/package/16?promoCodeIV8E496E2F7A &#x1f4dd; 前言 开源圈热门的「数字员…...

dy app抓包分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;抓包展示总结1.出于安全考虑,本章未提供…...

STM32F407用HAL库驱动42步进电机,从CubeMX配置到代码调试的完整避坑指南

STM32F407 HAL库驱动42步进电机实战&#xff1a;从CubeMX配置到高效调试的完整指南 第一次用STM32F407的HAL库驱动42步进电机时&#xff0c;我花了整整三天时间才让电机转起来。最让我抓狂的是明明CubeMX配置看起来一切正常&#xff0c;TIM1通道就是死活不出PWM波形。后来才发现…...

Steam Economy Enhancer:终极Steam市场与库存自动化管理指南

Steam Economy Enhancer&#xff1a;终极Steam市场与库存自动化管理指南 【免费下载链接】Steam-Economy-Enhancer 中文版&#xff1a;Enhances the Steam Inventory and Steam Market. 项目地址: https://gitcode.com/gh_mirrors/ste/Steam-Economy-Enhancer Steam Eco…...

Multiverse 引擎3.0:大屏、移动、AR三端覆盖,AR交互功能详解

在Multiverse 3.0版本中&#xff0c;我们首次实现了移动端、大屏端与AR端的全覆盖。基于“一模双擎”架构&#xff0c;用户在Web端可视化编辑器&#xff08;支持“拖、拉、拽”搭建场景&#xff09;中创建的数字孪生场景&#xff0c;可在像素流中直接加载&#xff0c;自动适配到…...

Python盲水印终极指南:3个简单步骤保护你的数字版权

Python盲水印终极指南&#xff1a;3个简单步骤保护你的数字版权 【免费下载链接】BlindWatermark 使用盲水印保护创作者的知识产权using invisible watermark to protect creators intellectual property 项目地址: https://gitcode.com/gh_mirrors/bl/BlindWatermark 在…...

如何使用 Graphviz 在 5 分钟内创建专业流程图:Python 数据可视化终极指南

如何使用 Graphviz 在 5 分钟内创建专业流程图&#xff1a;Python 数据可视化终极指南 【免费下载链接】graphviz Simple Python interface for Graphviz 项目地址: https://gitcode.com/gh_mirrors/gr/graphviz 想要快速创建专业流程图吗&#xff1f;Graphviz 是一个强…...

直线模组选型别再“先选电机“了!导程才是起点(附正向推导五步法)

引言&#xff1a;一个高频"翻车"现场在直线模组&#xff08;丝杆模组&#xff09;选型中&#xff0c;有个环节经常出现逆向翻车——工程师先选好了电机&#xff0c;再去配丝杆导程&#xff0c;结果发现&#xff1a;❌ 速度上不去❌ 推力不够大❌ 电机严重发热问题的根…...

贪吃蛇游戏设计-7.完整系统

7.完整系统 完整系统Snake代码太多,另有源码。 一个基于 HarmonyOS ArkTS 开发的经典贪吃蛇游戏,适合作为 ArkTS 开发的学习项目。 功能特性 🎮 经典贪吃蛇玩法 📊 实时分数显示 🏆 最高分记录 📝 玩家姓名输入与成绩保存 📋 排行榜展示 🗑️ 排行榜滑动删除功…...

保姆级教程:手把手教你用Python搭建HTTP服务器,为安信可BL602模组OTA升级铺路

从零构建Python HTTP服务器&#xff1a;物联网开发者的OTA升级基石 在物联网设备开发中&#xff0c;固件升级(OTA)是产品生命周期管理的关键环节。想象一下这样的场景&#xff1a;当您需要为部署在数百公里外的设备更新功能时&#xff0c;无需物理接触设备&#xff0c;只需通过…...