关于集合注入-@Autowired,@Resource,xml配置等实现

目录

@Autowired方式

@Resource方式

xml注解方式

使用autowire属性

使用util插件


在我们开发工作中,一般是使用@Autowired,@Resource,xml配置等来实现单个实例等依赖注入。然而,当我们需要注入的是一个集合对象的时候,我们要怎么操作呢?

实际的使用场景可能是这样的,我需要把某个接口的全部实现都注入到一个工厂实例中,然后根据条件返回对应的实例。那如何实现呢?话不多说,上代码

  • @Autowired方式

    @Autowired
    private Map<String, TestInterface> injectMap;

    @Autowired
    private List<TestInterface> injectList;


以上两个用法,会将实现类TestInterface接口的所有实现类,注入到属性当中。如果是Map,则会把实例的名称赋值给map的key,实例对象复制给value。如果实例对象指明了名称,则会给指定的名称,否则会给定Spring自动生成的名称。

  • @Resource方式

这个方式和@Autowired的使用方法一样。

  • xml注解方式

xml注解方式,有两种

使用autowire属性

自动绑定属性,设置成功后,会按照设置的策略去注入对象的属性值。

	<!-- 创建策略工厂 -->
    <bean name="greetStrategyFactory" class="com.local.mytest.disgnModle.StrategyModel2.GreetStrategyFactory" autowire="byType"/>

这个属性值有一下几个枚举:
default:如果在bean上指定了default,则它会去beans标签上去找default-autowire属性
no:不匹配,但是bean必须定义ref元素
byName:根据名字匹配(如果容器里没有该name的bean,则该属性为null)
byType:根据类型匹配(如果同时找多个相同类型的bean,则报错)
constructor:根据构造器匹配(很少使用)

使用util插件

util是xml配置的插件,需要引入xml文件头。我这里直接给出

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

    <!-- 测试实例 -->
    <bean name="testReal1" class="com.local.mytest.TestReal1"/>
    <bean name="testReal2" class="com.local.mytest.TestReal2"/>
    <bean name="testReal3" class="com.local.mytest.TestReal3"/>

    <!-- 创建策略工厂 -->
    <bean name="testGetBeanFactory" class="com.local.TestGetBeanFactory">
        <!-- Map配置方式  -->
        <property name="testRealMap">
            <util:map>
                <entry key="testReal1"  value-ref="testReal1"/>
                <entry key="testReal2" value-ref="testReal2"/>
                <entry key="testReal3" value-ref="testReal3"/>
            </util:map>
        </property>
        <!-- List配置方式  -->
        <property name="testRealList">
            <util:list>
                <ref bean="testReal1"/>
                <ref bean="testReal2"/>
                <ref bean="testReal3"/>
            </util:list>
        </property>
    </bean>

</beans>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值