Spring 获取 实现某接口的所有实例bean

               

首先,获取 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 = nullprivate 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

猜你喜欢

转载自blog.csdn.net/hgffhh/article/details/86488236