JAVA一个接口多个实现逐个调用

简介: JAVA一个接口多个实现逐个调用

经测试确认,当一个接口有多个实现时,调用时只会执行一个

有时候需要多个实现调用,方法示例如下:

public interface TransCallbackInterface {


public void callback(String taskId, int code, String fixed);

}
@Component
public class TransCallbackDy implements  InitializingBean,TransCallbackInterface{

@Override
public void callback(String taskId, int code, String fixed) {
    System.out.println("TransCallback");
}

@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println("callback registerCallbackProcessor .");

FileTransferShedule.registerCallbackProcessor(this);

}

}
@Component
public class TransCallbackDy implements  InitializingBean, TransCallbackInterface{

@Override
public void callback(String taskId, int code, String fixedInfo) {
    System.out.println("TransCallback");
}

@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println("callback registerCallbackProcessor .");

FileTransferShedule.registerCallbackProcessor(this);
}

}
调用方式:

@Component
public class FileTransferShedule implements InitializingBean, DisposableBean {

@Override

public void afterPropertiesSet() throws Exception {
    
}

@Override

public void destroy() throws Exception {
    logger.debug("service closed");

}


private static List<TransCallbackInterface> processors = new ArrayList<TransCallbackInterface>();

public static void registerCallbackProcessor(
        TransCallbackInterface processor) {
    synchronized (processors) {
        processors.add(processor);
    }
}

public static void unregisterCallbackProcessor(
        TransCallbackInterface processor) {
    synchronized (processors) {
        processors.remove(processor);
    }
}

public void callback(HttpServletRequest request) {


    logger.debug("回调接口测试");
    try {
        Throwable t = null;
        synchronized (processors) {
            for (TestCallbackInterface processor : processors) {
                try {
                    processor.callback();
                } catch (Throwable e) {
                    t = e;
                }
            }
        }
        if (t != null) {
            throw new IOException(t);
        }
        System.out.println("test");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

相关文章
|
8月前
|
Java
Java一分钟之-方法定义与调用基础
【5月更文挑战第8天】本文介绍了Java编程中的方法定义和调用,包括基本结构、常见问题和避免策略。方法定义涉及返回类型、参数列表和方法体,易错点有返回类型不匹配、参数错误和忘记返回值。在方法调用时,要注意参数传递、静态与非静态方法的区分,以及重载方法的调用。避免错误的策略包括明确返回类型、参数校验、理解值传递、区分静态和非静态方法以及合理利用重载。通过学习和实践,可以提升编写清晰、可维护代码的能力。
267 0
|
Java
java多次调用,最后一次调用后才执行
java多次调用,最后一次调用后才执行
100 0
|
Java API 开发工具
使用阿里云RPA调用Java编写的接口
使用阿里云RPA调用Java编写的接口
318 1
|
Java
一个类的两个接口有同名函数,JAVA如何调用
一个类的两个接口有同名函数,JAVA如何调用
112 0
|
Java
java判断两个对象是否相同个方法源码分析
java判断两个对象是否相同个方法源码分析
115 0
|
Java API Apache
Java调用第三方接口的方法
Java调用第三方接口的方法
554 0
JAVA一个接口多个实现逐个调用
JAVA一个接口多个实现逐个调用
290 0
|
Java
Java 支持两种调用方法的方式
Java 支持两种调用方法的方式
168 0
|
NoSQL 算法 Java
java方法调用数组做参数,详细的Java学习指南
java方法调用数组做参数,详细的Java学习指南
java方法调用数组做参数,详细的Java学习指南