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

这篇具有很好参考价值的文章主要介绍了使用Spring的getBeansOfType实现接口多实现类的动态调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Spring的getBeansOfType实现接口多实现类的动态调用文章来源地址https://www.toymoban.com/news/detail-693456.html

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;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    @Override
    public 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-success
            for (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实现接口多实现类的动态调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用MyBatis的mapper接口调用时有哪些要求?Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

    1. Mapper接口方法名和mapper.xml中定义的每个 sql的id相同 2.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的 parameterType的类型相同 3.Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的 resultType的类型相同 4.Mapper.xml文件中的 namespace 即是 mapper接口的类路径 可以在

    2024年02月16日
    浏览(41)
  • spring boot applicationContext.getBeansOfType 无法获取所有bean对象

     代码如上所示,我想在某个service中注入所有AvatarScanCallback类型bean对象,但是发现无法注入全部bean, 最后检查发现是因为有些AvatarScanCallback的子对象中存在循环依赖问题导致此时只能获取一部分。  

    2024年02月17日
    浏览(42)
  • Spring Cloud Alibaba【OpenFeign实现服务降级、Dubbo实现服务生产者、 Dubbo消费者调用接口 】(三)

    目录 服务调用_OpenFeign实现服务降级 服务调用_Dubbo实现服务生产者 

    2024年02月17日
    浏览(49)
  • Python ❀ 使用代码实现API接口调用详解

    本文主要讲解常用API接口如何使用python实现。 API :Application Programming Interface,是 应用程序开发接口 的缩写,意思是一些预设好的函数或方法,这些预设好的函数或方法允许第三方程序通过网络来调用数据或提供基于数据的服务。 Python运行环境:python3.10.2 + PyCharm 使用 pip

    2024年01月18日
    浏览(48)
  • 使用反射调用类的私有内部类的私有方法

    在进行单元测试时,我们往往需要直接访问某个类的内部类或者某个类的私有方法,此时正常的调用就无能为力了,因此我们可以使用反射进行调用。 类 实现方法 获取类的Class对象 Class class = Class.forName(\\\"类名\\\") 或 Class class = 类实例.getClass() new一个实例 Object object = class.newIn

    2024年02月07日
    浏览(42)
  • 使用SSE技术调用OPENAI接口并实现流式输出,用PHP语言实现

    作为AI语言模型服务提供商,OpenAI 提供了一系列的 API 接口,其中大部分需要通过 HTTP 请求访问。对于大量数据的请求,传统的同步请求会导致网络响应变慢,无法满足实时数据处理和分析的需求。因此,为了优化这些接口的调用效率,我们可以利用 SSE(Server Sent Events) 技术来

    2024年02月11日
    浏览(47)
  • 【Spring Cloud】如何使用Feign实现远程调用

    本次示例代码的文件结构如下图所示。 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标。 在 order-service 的启动类上添加注解 @EnableFeignClients ,以开启 Feign 功能。 Feign 采用了 Spring MVC 的注解的方式发起远程调用。只需要把发 HTTP 请求的信息声明在一个接口中,并添加注解

    2024年02月13日
    浏览(47)
  • Openssl数据安全传输平台019:外联接口类的封装以及动态库的制作 - Bug未解决,感觉不是代码的问题

    可以参考这个项目的实现,将加解密封各自封装好 https://github.com/Chufeng-Jiang/OpenSSL_Secure_Data_Transmission_Platform/tree/dev_origin/Module%20Preparation%20and%20Test/07.CryptoTest 提供的接口不是一个应用程序 - 不是进程 如何从共享内存中读数据? 虽然接口不是程序, 但是要被业务程序调用 业务程

    2024年02月06日
    浏览(45)
  • 答疑解惑:解释在Mybatis-Spring下@Mapper与@MapperScan为何不能同时生效以及实现动态条件注册Mapper接口

    若项目中使用了@MapperScan注解后,则@Mapper注解不再生效 , 原因是:@MapperScan注解 会执行@Import(MapperScannerRegistrar.class),而MapperScannerRegistrar又会注册MapperScannerConfigurer BEAN,在MapperScannerConfigurer BEAN中会完成基于配置的包目录扫描注册所有mapper interface代理BEAN,而@Mapper注解的生效

    2024年02月11日
    浏览(43)
  • 使用python调用微步在线接口实现自动化查询IP情报

    目录 一、微步在线接口说明 二、官方示例 三、自动化查询IP情报信息         针对入站场景的IP进行分析, 能够提供IP的地理位置、ASN信息,通过判定规则精准判别IP是否恶意、风险严重级别、可信度级别;识别威胁类型,如:漏洞利用(exploit)、傀儡机(Zombie)、代理

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包