(1)Spring的getBeanNamesForType(interface.class)
1、获取 applicationContext,通过ApplicationAware自动注入
2、getBeansOfType、getBeanNamesForType
Map<String, Interface> result = applicationContext().getBeansOfType(Interface.class);
//key位 beanName,value为bean
String[] result = applicationContext().getBeanNamesForType(Interface.class);
//返回 beanName 的String 数组
(2)获取具体的实例
Map<String,String> map=new HashMap<String,String>();
for(String beanName:result){
具体实例=(具体实例)applicationContext.getBean(beanName);
查询该类的注解就ok了
key:可以使用注解生成 名称/版本 或者一个简单的场景
map.put(key,具体实例);
}
具体的业务实现,根据map获取具体得到实现类
在详细点
public interface A{
}
@API(name="b")
public class B implements A{
}
@API(name="c")
public class C implements A{
}
map中的值
key: haha value B
key:haha1 value C
或者自定义一个注解
public @interface API{
name() deafult'";
}
map中的值
key: b value B
key: c value C