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();