spring应用手册-IOC(XML配置实现)-(25)-ref注入引用对象

戴着假发的程序员 出品

ref注入引用对象

spring应用手册(第一部分)


当我们通知spring帮我们注入某个引用来行的对象时,我们可以使用ref通知spring注入bean的beanName。

案例:

我们有AccountDAO和AccountService类:

/**
 * @author 戴着假发的程序员
 *  
 * @description
 */
public class AccountDAO implements IAccountDAO {
    @Override
    public int save(String name) {
        System.out.println("AccountDAO-save:"+name);
        return 1;
    }
}
/**
 * @author 戴着假发的程序员
 *  
 * @description
 */
public class AccountService {
    private AccountDAO accountDAO;
    public void setAccountDAO(AccountDAO accountDAO) {
        this.accountDAO = accountDAO;
    }
    // 无参构造
    public AccountService(){}
    //有参构造
    public AccountService(AccountDAO accountDAO) {
        this.accountDAO = accountDAO;
    }
    public int save(String name){
        System.out.println("AccountService-save:"+name);
        return accountDAO.save(name);
    }
}

我们可以以下面的方式配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans  default-autowire="byName" 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.xsd">
    <!--dao-->
    <bean id="accountDAO1" class="com.boxuewa.dk.demo2.dao.impl.AccountDAO"/>
    <!-- service方式1-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <property name="accountDAO" ref="accountDAO1"/>
    </bean>
    <!-- service方式2-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <property name="accountDAO"><ref bean="accountDAO1"/></property>
    </bean>
    <!-- service方式3-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <constructor-arg name="accountDAO" ref="accountDAO1"/>
    </bean>
    <!-- service方式4-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <constructor-arg name="accountDAO"><ref bean="accountDAO1"/></constructor-arg>
    </bean>
    <!-- service方式5-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <property name="accountDAO">
            <bean class="com.boxuewa.dk.demo2.dao.impl.AccountDAO"/>
        </property>
    </bean>
    <!-- service方式6-->
    <bean id="accountService1" class="com.boxuewa.dk.demo2.service.AccountService">
        <constructor-arg name="accountDAO">
           <bean class="com.boxuewa.dk.demo2.dao.impl.AccountDAO"/>
        </constructor-arg>
    </bean>
</beans>

测试:

    @Test
    public void testRef(){
        ApplicationContext ac =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        AccountService bean1 = (AccountService) ac.getBean("accountService1");
        AccountService bean2 = (AccountService) ac.getBean("accountService2");
        AccountService bean3 = (AccountService) ac.getBean("accountService3");
        AccountService bean4 = (AccountService) ac.getBean("accountService4");
        AccountService bean5 = (AccountService) ac.getBean("accountService5");
        AccountService bean6 = (AccountService) ac.getBean("accountService6");
        bean1.save("假发-1");
        bean2.save("假发-2");
        bean3.save("假发-3");
        bean4.save("假发-4");
        bean5.save("假发-5");
        bean6.save("假发-6");
    }

结果:

AccountService-save:假发-1
AccountDAO-save:假发-1
AccountService-save:假发-2
AccountDAO-save:假发-2
AccountService-save:假发-3
AccountDAO-save:假发-3
AccountService-save:假发-4
AccountDAO-save:假发-4
AccountService-save:假发-5
AccountDAO-save:假发-5
AccountService-save:假发-6
AccountDAO-save:假发-6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴着假发的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值