spring 调用一个接口的所有实现类的方法

1.定义接口(其实定义接口就是一个标记作用)

public interface ITeleCommunicatinService {
public void dealYaoXin(TeleCommunicating tc);

}

2.通过ApplicationContext  获取到所有的实现了这个接口的方法 然后调用所有

          

    /**
* 处理关联的方法
*/
public void dealReferenceService(TeleCommunicating tc){
ApplicationContext ac = SpringUtil.getContext();
Map<String, ITeleCommunicatinService> result = ac.getBeansOfType(ITeleCommunicatinService.class);
if(null != result && !result.isEmpty()){
for(Map.Entry<String, ITeleCommunicatinService> entry:result.entrySet()){
// System.out.println(entry.getKey());//默认是类名(不带报名)
// System.out.println(entry.getValue().getClass());//类的全名输出
try {
ITeleCommunicatinService it = SpringUtil.getBeanByType(entry.getValue().getClass());
it.dealYaoXin(tc);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

3.当这个dealReferenceService被调用时 ,ITeleCommunicatinService这个接口的所有实现类就会都被调用实现的方法。

//---------------------------------------------------------------------------------------------------------------

/**
* Spring 工具类
*
*/
public class SpringUtil  implements ApplicationContextAware {
private static ApplicationContext applicationContext;

public SpringUtil() {
}

@SuppressWarnings("static-access")
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
this.applicationContext=context;
}
/**
* 根据beanName 获取 spring bean
* @param beanName
* @return Object
*/
public static  Object getBean(String beanName){
if(beanName==null)return null;
    return applicationContext.getBean(beanName);
}
/**
* 根据bean type 获取springBean
* @param clazz
* @return
*/
public static <T> T getBeanByType(Class<T> clazz){
return applicationContext.getBean(clazz);
}

/**
* 获取 Spring applicationContext
* @return
*/
public static ApplicationContext getContext() {
return applicationContext;
}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值