本文主要是介绍Spring getBeansOfType方法 剖析及延展:获取指定类型的JavaBean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该方法用于获取 Spring 容器中指定类型的所有 JavaBean 对象。
语法:
getBeansOfType(Class type)
参数说明:
- type:指定的类的 Class 示例。
返回值:容纳指定类型JavaBean对象的Map集合。
示例
首先获取容器中 Date 类的所有 JavaBean 名称,然后获取所有 Date 类的 JavaBean 的 Map 集合,再使用 JavaBean 名称分别获取示例对象,最后输出结果,关键代码如下:
public static void main(String[] args){ApplicationContext context = new ClassPathXmlApplicationContext("appContext.xml");String[] eanNames = context.getBeanNamesForType(Date.class); //获取指定类型的所有JavaBean对象Map beans = context.getBeansOfType(Date.class); //获取容器中指定类for(String name:beanNames){Date bean = (Date)beans.get(name);System.out.println("名称为"+name+"的JavaBean输出结果为:"+bean);}
}
该示例的配置文件代码如下:
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="time"class="java.util.Date"></bean><%--配置JavaBean--%><bean id="time2"class="java.util.Date"></bean><bean id="time3"class="java.util.Date"></bean></beans>
延展:
可以通过这种方式获取容器中定义的扩展点类型,基于业务场景路由到具体的业务扩展点实现类上面;
@Component
public class SpringContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextUtil.applicationContext = applicationContext;}public static <T> List<T> getBeanListOfType(Class<T> clazz) {List<T> result = new ArrayList<>();Map<String, T> map = applicationContext.getBeansOfType(clazz);if (null != map) {result.addAll(map.values());}return result;}
}
这篇关于Spring getBeansOfType方法 剖析及延展:获取指定类型的JavaBean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!