首先,获取 applicationContext,通过ApplicationAware自动注入
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;/** * @ClassName: SpringBeanUtil * @Description: TODO(spring功能类,用于获取bean) * @author zhoushun * @date 2012-11-27 下午04:22:36 * */@Component("springBeanUtil")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; } public static Properties getProperties(String filepath) { if (propMap.containsKey(filepath)) return propMap.get(filepath); Resource resource = ctx.getResource(filepath); Properties prop = new Properties(); try { prop.load(resource.getInputStream()); propMap.put(filepath, prop); return prop; } catch (IOException e) { logger .error("can not find the resource file:[" + filepath + "]", e); return null; } }}
使用:
Map<String, Interface> result = SpringBeanUtil.getApplicationContext().getBeansOfType(Interface.class);
key位 bean name,value为实例
String[] result = SpringBeanUtil.getApplicationContext().getBeanNamesForType(IPrizeInvoke.class);
返回 bean name 的String 数组
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow