栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

获取一个接口的所有实现类的两种方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取一个接口的所有实现类的两种方法

首先是接口
public interface AccountStatusCheckChain {

    void next(Long userId);
}
方法1:使用Spring自带的方法

Application.getBeansOfType();
Spring作为一个容器,管理着一个项目中所有经过配置的Java类(xml配置文件或Annotation方式)。如果某个接口的所有实现类均被Spring托管了,那么通过Spring就可以很简单的返回这些实现类。

public void get() {
    Map beans = applicationContext.getBeansOfType(AccountStatusCheckChain.class);
    beans.forEach((beanName, bean) -> {
    			// 执行实现类的方法
                bean.next(1L);
            }
    );
}
方法2使用JDK自带的ServiceLoader实现

ServiceLoader是JDK自带的一个类加载器,位于java.util包当中,作为 A simple service-provider loading facility.

使用方法:
具体使用:
1.在META-INF/services/目录下用你的接口全路径名称命名一个文件(不加后缀),然后在该文件中一行一个添加你的接口实现类的全路径名。
![在这里插入图片描述](https://img-blog.csdnimg.cn/60bd9b17babb411b8bfbaffec2c4cf63.png


2.通过load方法来加载出所有的接口实现类:load方法的返回值是一个迭代器,用这个迭代器可以遍历出所有的接口实现类

 public static void main(String[] args) {
     ServiceLoader load = ServiceLoader.load(AccountStatusCheckChain.class);
     System.out.println(load);
     load.forEach(
             chain -> {
             	 // 实现类
                 chain.next(1L);
             }
     );
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号