首先 实现
ApplicationContextAware获取spring上下文
ApplicationContext
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@Component
public class SpringBeanUtil implements ApplicationContextAware {
protected final static Log logger = LogFactory.getLog(SpringBeanUtil.class);
private static ApplicationContext ctx = null;
private static Map<String, Properties> propMap = new HashMap<String, Properties>(
0);
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
SpringBeanUtil.ctx = ctx;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
public static <T> T getBean(String prop) {
Object obj = ctx.getBean(prop);
if (logger.isDebugEnabled()) {
logger.debug("property=[" + prop + "],object=[" + obj + "]");
}
return (T)obj;
}
}
使用:
Map<String, Interface> result = SpringBeanUtil.getApplicationContext().getBeansOfType(Interface.class);
key位 bean name,value为实例
String[] result = SpringBeanUtil.getApplicationContext().getBeanNamesForType(IPrizeInvoke.class);
返回 bean name 的String 数组
详情可以参考上篇文章