需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法
1.SpringContextUtil
package com.XXX.report.util;
import org.apache.log4j.Logger;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @FileName SpringContextUtil.java
* @Description:
* @author 东天里的冬天
* @version V1.0
* @createtime 2018年5月11日 上午9:54:57
* 修改历史:
* 时间 作者 版本 描述
*====================================================
*
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static Logger logger = Logger.getLogger(SpringContextUtil.class);
private static ApplicationContext applicationContext = null;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
logger.info("------SpringContextUtil setApplicationContext-------");
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 注意 bean name默认 = 类名(首字母小写)
* 例如: A8sClusterDao = getBean("a8sClusterDao")
* @param name
* @return
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 根据类名获取到bean
* @param <T>
* @param clazz
* @return
* @throws BeansException
*/
@SuppressWarnings("unchecked")
public static <T> T getBeanByName(Class<T> clazz) throws

本文介绍了如何利用反射机制实现对一组Service接口中相同名称方法的统一调用。通过SpringContextUtil获取bean,结合配置文件注入,以及在BaseServiceImpl基类中定义通用方法,实现了对service接口方法的灵活调用。注意service注解上的别名应遵循接口名首字母小写的规则。

13万+

被折叠的 条评论
为什么被折叠?



