`

Spring getBeansofType

 
阅读更多
//////////////////////////////////
如何载入所有同类型的bean
//////////////////////////////////

使用BeanFatory的getBeansOfType()方法,该方法返回一个Map类型的实例,Map中的key为Bean的名,key对应的内容为Bean的实例。

该方法有两种类型的重载

getBeansOfType(Class),获取某一类的所有的bean。

getBeansOfType(Class,boolean,boolean),后面两个布尔值,第一代表是否也包含原型(Class祖先)bean或者或者只是singletons(包含FactoryBean生成的),第二个表示是否立即实例化懒加载或者由FactoryBean生成的Bean以保证依赖关系。

例程代码:

配置如下

   
     Hello!Justin!
   


   
       Hello!caterpillar!
   

程序如下
Map helloBeans = factory.getBeansOfType(HelloBean.class, false, false);


在applicationContext.xml配置文件中,有如下的bean配置
 <!-- 使用托管方式的disconf配置(无代码侵入, 配置更改会自动reload)-->
    <bean id="configproperties_disconf"
          class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>classpath:/autoconfig.properties</value>
                <value>classpath:/autoconfig2.properties</value>
                <value>classpath:/myserver_slave.properties</value>
                <value>classpath:/testJson.json</value>
                <value>testXml2.xml</value>
            </list>
        </property>
    </bean>
    <bean id="configproperties_no_reloadable_disconf"
          class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>myserver.properties</value>
            </list>
        </property>
    </bean>


使用applicationContext方法getBeansOfType()得当的map如下所示

Class<ReloadablePropertiesFactoryBean> type = ReloadablePropertiesFactoryBean.class;
            
            Map<String, ReloadablePropertiesFactoryBean>  map = applicationContext.getBeansOfType(type);
            
            System.out.println("map="+map.toString());


map={&configproperties_disconf=ReloadablePropertiesFactoryBean, &configproperties_no_reloadable_disconf=ReloadablePropertiesFactoryBean}

参考:http://blog.sina.com.cn/s/blog_5d03c2970102wa87.html
分享到:
评论

相关推荐

    Spring3新特性

    例如,`T getBean(String name, Class&lt;T&gt; requiredType)` 和 `Map, T&gt; getBeansOfType(Class&lt;T&gt; type)` 方法的加入使得操作更加直观和安全。 2. **TaskExecutor接口更新** TaskExecutor接口继承自`java.util....

    spring 学习 interfaces例子

    例如,`getBean()`方法用于获取指定名称的Bean实例,`getBeansOfType()`则可以获取所有指定类型的Bean。 2. `BeanFactory`:它是`ApplicationContext`的父接口,提供更底层的Bean管理功能。虽然在实际开发中通常...

    第五章 Spring 依赖查找1

    在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它允许对象间的依赖关系被外部容器管理,而不是由对象自身负责。Spring IoC(Inversion of Control)容器是实现DI的核心组件。本章...

    韩顺平Spring笔记

    从`ApplicationContext`中获取Bean有两种方式:通过`getBean(String beanId)`获取指定ID的Bean,或者通过`getBeansOfType(Class&lt;?&gt; requiredType)`获取所有指定类型的Bean。 总的来说,Spring框架通过提供IoC和DI,...

    39.3 Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在本主题中,我们将深入探讨如何使用Spring Boot与Apache Shiro进行权限管理。Spring Boot以其简洁的配置和快速的应用开发特性,已经成为了Java领域中的热门框架。而Shiro则是一款强大的安全框架,提供了身份验证、...

    学习Spring的一点代码01:如何获取bean?

    `ApplicationContext`提供了多个变体的`getBean`方法,如`getBean(String)`,`getBean(Class)`和`getBeansOfType(Class)`。后者可以获取所有匹配类型的Bean。 6. **`BeanFactory`接口** 如果你不需要完整的...

    spring如何动态指定具体实现类

    Map, ServiceInterface&gt; beanMap = applicationContext.getBeansOfType(ServiceInterface.class); for (ServiceInterface serviceImpl : beanMap.values()) { serviceImplMap.put(serviceImpl.toString(), ...

    Spring Boot中的那些条件判断的实现方法

    Map, Person&gt; map = applicationContext.getBeansOfType(Person.class); System.out.println(map); } } ``` 输出的结果: 当前系统为:Mac OS X {linus=Person(name=Linus, age=48)} 从上面的示例可以看到,...

    Spring注解@Conditional案例解析

    Map, Person&gt; map = applicationContext.getBeansOfType(Person.class); System.out.println(map); } } ``` 测试结果: ``` {bill=Person{name='Bill Gates',age=62},linus=Person{name='Linus',age='48'}} ``` ...

    Java获取接口所有实现类的方式详解

    map = applicationContext.getBeansOfType(IService.class); } public Map, IService&gt; getMap() { return map; } } ``` 在上面的代码中,我们使用了 Spring 的 `ApplicationContext` 来获取所有的接口实现类...

Global site tag (gtag.js) - Google Analytics