0
点赞
收藏
分享

微信扫一扫

SpringFactoriesLoader.loadFactories 使用

灯火南山 2022-01-21 阅读 53
javaspring

 

定义接口和实现类

public interface SF {

    void m1();
}



public class SFI1 implements SF {
    @Override
    public void m1() {

    }
}


public class SFI2 implements SF {
    @Override
    public void m1() {

    }
}

新增META-INF/spring.factories

com.eason.lhh.demo.springfactories.SF=\
  com.eason.lhh.demo.springfactories.SFI1,\
  com.eason.lhh.demo.springfactories.SFI2

 

编写测试代码


import org.springframework.core.io.support.SpringFactoriesLoader;

import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

/**
 * 1从META-INF/spring.factories文件中读取key(接口全路径),对应的value集合
 * 2将value集合实例化
 */
public class SpringFactoriesTest {

    public static void main(String[] args) {
        //读取文件内容,key对应的value集合
        Set<String> names = new LinkedHashSet<>(
                SpringFactoriesLoader.loadFactoryNames(SF.class, SpringFactoriesTest.class.getClassLoader()));
        System.out.println(names);

        //读取文件内容,key对应的value集合,并且把value集合对应的类实例化
        List<SF> list = SpringFactoriesLoader.loadFactories(SF.class,
                SpringFactoriesTest.class.getClassLoader());
        System.out.println(list);
    }

}
举报

相关推荐

0 条评论