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

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; 
 }
 }
}
————————————————
版权声明:本文为CSDN博主「我不知道深度的」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hgffhh/article/details/86488236

使用:
Map<String, Interface> result = SpringBeanUtil.getApplicationContext().getBeansOfType(Interface.class);

key位 bean name,value为实例

String[] result = SpringBeanUtil.getApplicationContext().getBeanNamesForType(IPrizeInvoke.class);

返回 bean name 的String 数组
————————————————
 

.net unity

IUnityContainer container = new UnityContainer();//1、定义一个空容器
container.RegisterType<IDbInterface, DbMSSQL>();//2、注册类型,表示遇到IDbInterface的类型,创建DbMSSQL的实例
var db = container.Resolve<IDbInterface>();
Console.WriteLine(db.Insert());
Console.ReadKey();

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值