Spring 的getBeanNamesForType和getBean联合使用

(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值