异步任务判断执行和重复使用实现类

news2024/10/5 16:30:06

主要是展示一下如何在书写异步任务判断的时候,如何根据返回值类型进行重复使用相同接口里面的不同实现类的方法

/**
 * 父类接口
 * **/
public interface Exceutor {
    String getTaskType();
    void excetuor(String s);
}

/**
 * 异步处理任务的任务类型
 *
 * @author yangziqian
 */
public interface TaskTypeConstants {

    /**
     * 支付结果查询定时任务
     */
    String PAY_RESULT_QUERY = "PAY_RESULT_QUERY";
    /**
     * 发起支付定时任务
     */
    String PAY_INVOKE = "PAY_INVOKE";
    /**
     * 支付状态变更消息推送
     */
    String PAY_STATUS_PUSH = "PAY_STATUS_PUSH";
}

import com.data.pay.service.Exceutor;
import com.data.pay.service.TaskTypeConstants;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

@Component
public class E1 implements Exceutor {
    @Override
    public String getTaskType() {
        return TaskTypeConstants.PAY_INVOKE;
    }

    @Override
    public void excetuor(String s) {
        System.out.println("我是E1");
    }
}

import com.data.pay.service.Exceutor;
import com.data.pay.service.TaskTypeConstants;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

@Component
public class E2 implements Exceutor {
    @Override
    public String getTaskType() {
        return TaskTypeConstants.PAY_STATUS_PUSH;
    }

    @Override
    public void excetuor(String s) {
        System.out.println("我是E2");
    }
}

/**
*测试类
**/
import com.data.pay.lambda.TrxService;
import com.data.pay.service.Exceutor;
import com.data.pay.service.impl.E1;
import com.data.pay.service.impl.E2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


@SpringBootTest
class PayDemo1ApplicationTests {
    @Autowired
    private TrxService trxService;
    @Autowired
    private List<Exceutor> processorList;

    private Map<String, Exceutor> processorMap;
    @Test
    public void contextLoads() {
        //以Exceutor的getTaskType方法返回值作为键,Exceutor的实现类作为值
        processorMap = processorList.stream().collect(Collectors.toMap(Exceutor::getTaskType, e -> e));
        //遍历打印出来很明显键是Exceutor::getTaskType的返回值,值是Exceutor的子类实现对象
        processorMap.forEach((e,value)-> System.out.println("键:"+e+"值:"+value));
        Exceutor processor = processorMap.get("PAY_STATUS_PUSH");
        processor.excetuor("6");
    }


}

在这里插入图片描述

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

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

相关文章

万界星空科技MES系统中的生产管理

MES系统能够帮助企业实现生产计划管理、生产过程控制、产品质量管理、车间库存管理、项目看板管理等&#xff0c;提高企业制造执行能力。 万界星空MES系统特点&#xff1a; 1. 采用强大数据采集引擎、整合数据采集渠道&#xff08;RFID、条码设备、PLC、Sensor、IPC、PC等&…

【JAVA】异常体系

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 Exception&#xff08;异常&#xff09;: Error: 结语 我的其他博客 前言 在Java编程中&#xff0c;异常处理是一个至关…

python练习3【题解///考点列出///错题改正】

一、单选题 1.【单选题】 ——可迭代对象 下列哪个选项是可迭代对象&#xff08; D&#xff09;&#xff1f; A.(1,2,3,4,5) B.[2,3,4,5,6] C.{a:3,b:5} D.以上全部 知识点补充——【可迭代对象】 可迭代对象&#xff08;iterable&#xff09;是指可以通过迭代&#xff…

揭秘人工智能:探索智慧未来

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 什么是人工智能?二. 人工智能的关键技术2.1 机器学习2.2 深度学习2.1 计算机…

基于web3.js和ganache实现智能合约调用

目的&#xff1a;智能合约发布到本地以太坊模拟软件ganache并完成交互 准备工作&#xff1a; web3.jsganache模拟软件 ganache参数配置 从ganache获取一个url&#xff0c;和一个账号的地址&#xff0c; url直接使用图中的rpc server位置的数据即可 账号address从下列0x开头…

深度学习(Pytorch版本)

零.前置说明 1、code 2、视频 数据预处理实现_哔哩哔哩_bilibili

RoadMap8:C++中类的封装、继承、多态与构造函数

摘要&#xff1a;在本章中涉及C最核心的内容&#xff0c;本文以C中两种基础的衍生数据结构&#xff1a;结构体和类作为引子&#xff0c;从C的封装、继承与多态三大特性全面讲述如何在类这种数据结构进行体现。在封装中&#xff0c;我们讲解了类和结构体的相似性&#xff1b;在继…

2023南京理工大学通信工程818信号系统及数电考试大纲

注&#xff1a;&#xff08;Δ&#xff09;表示重点内容。具体内容详见博睿泽信息通信考研论坛 参考书目&#xff1a; [1] 钱玲&#xff0c;谷亚林&#xff0c;王海青. 信号与系统&#xff08;第五版&#xff09;. 北京&#xff1a;电子工业出版社 [2] 郑君里&#xff0c;应…

Profinet转Modbus网关助你畅享智能工业

Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;具有广泛的应用价值。无论是汽车制造、机械加工还是能源管理&#xff0c;都可以通过使用该网关&#xff0c;实现设备之间的高效通信。其次&#xff0c;Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;…

JVM篇:直接内存

直接内存 直接内存并不是JVM的内存结构&#xff0c;直接内存是操作系统的内存&#xff0c;Java本身并不能对操作系统的内存进行操作&#xff0c;而是通过调用本地方法。直接内存常用于NIO作为缓冲区存在&#xff0c;分配成本较高但是读写性能好&#xff0c;并且不受JVM内存回收…

产品设计的七个步骤详解

我们生活中使用的大大小小的东西都需要进行产品设计&#xff0c;那么什么是产品设计呢&#xff1f;产品设计是指从制定新产品设计任务到开发企业产品样品截止日期的一系列技术任务。让我分享一些产品设计步骤。 业务分析-要做什么业务分析 首先是制作业务流程图&#xff0c;这…

使用 dbgate 在 sealos 上完美管理 mysql pgsql 等数据库

先登录 sealos 创建数据库&#xff0c;可以创建个 pgsql: 再到模版市场启动 dbgate: 配置数据库的连接信息&#xff0c;即可搞定收工 sealos 以kubernetes为内核的云操作系统发行版&#xff0c;让云原生简单普及 laf 写代码像写博客一样简单&#xff0c;什么docker kubernete…

ubuntu18.04+realsenseD455制作TUM数据集

教程目录 一、本机环境二、安装RealSense SDK三、录制rosbag四、制作数据集四、安装ROS-RealSense五、测试数据集一、本机环境 Ubuntu系统ROS系统RealSense18.04melodicD455二、安装RealSense SDK 1、首先注册服务器的公钥 sudo apt-key adv --keyserver keyserver.ubuntu.co…

crontab定时任务不执行的原因

1.crond服务未启动 默认是开启的 2.权限问题 比如&#xff1a;脚本没有x执行权限&#xff0c; 解决方法&#xff1a; 增加执行权限&#xff0c;或者用bash abc.sh的方法执行 也有可能crontab任务所属的用户对某个目录没有写权限&#xff0c;也会失败 3.路径问题 建议使用绝…

【Angular 】Angular 模板中基于角色的访问控制

您是否在Angular模板中实现角色库访问控制&#xff1f;一种方法是通过*ngIf&#xff0c;但我不会选择该路径&#xff0c;因为它将在Angular模板中包含自定义函数&#xff0c;并且很难维护。正确的方法是使用Angular结构指令&#x1f680;. 什么是RBAC&#xff1f; 基于角色的…

【网络技术】【Kali Linux】Wireshark嗅探(七)超文本传送协议(HTTP)

一、实验目的 本次实验使用Wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解超文本传送协议&#xff08;HTTP&#xff09;的工作原理。 二、HTTP协议概述 超文本传送协议&#xff08; H yper T ext T ransfer P rotocol, HTTP&#xff09;是互联网应用层的一个重要协…

Python 面向对象之继承和组合

Python 面向对象之继承和组合 【一】继承 【1】概念 继承是面向对象的三大特征之一继承允许一个类继承另一个类的属性和方法继承可以使代码重用&#xff0c;解决类与类之间代码重复的问题 【2】代码解释 不使用继承&#xff0c;创建豌豆射手类和豌豆的双发射手类 # 豌豆射…

C语言编译器(C语言编程软件)完全攻略(第六部分:VS2017下载地址和安装教程(图解))

介绍常用C语言编译器的安装、配置和使用。 六、VS2017下载地址和安装教程&#xff08;图解&#xff09; 继vs2015版本后&#xff0c;微软又推出了功能更加强大的VS 2017。 Visual Studio 2017 不仅支持 C#、C、Python、Visual Basic、Node.js、HTML、JavaScript等各大编程语言…

KK集团高管变更:陈世欣任总经理,涉无证放贷遭关注,还曾被处罚

近日&#xff0c;KK集团关联公司广东快客电子商务有限公司&#xff08;下称“KK集团”&#xff09;发生工商变更&#xff0c;其中郭惠波不再担任该公司总经理一职&#xff0c;由陈世欣接任。而在早前&#xff0c;陈世欣曾于2020年取代吴悦宁担任总经理职务&#xff0c;2021年7月…

用Python和Scrapy来构建强大的网络爬虫

前言 构建强大的网络爬虫是一个复杂而有挑战性的任务。Python和Scrapy是两个强大的工具&#xff0c;可以帮助我们完成这个任务。在本文中&#xff0c;我将向您展示如何使用Python和Scrapy构建一个强大的网络爬虫&#xff0c;并且还将介绍如何使用代理IP来更好地爬取目标网站。…