定义接口和实现类
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);
}
}