Spring自动装配之byName和byType【Spring入门】

在使用Spring框架时,有些bean中有个成员变量是另一个bean。举个实际的例子,比如说CDPlayer类(CD播放器类)中有一个属性是CD(接口),代表着CDPlayer可以放各种CD,可以实例化为Mayday(五月天的歌)。

原来我们需要在配置CDPlayer这个bean的时候添加<porperty>,手动装配。代码如下:

        <bean id="cd" class="com.yykj.Mayday" />
        <bean id="cdPlayer" class="com.yykj.CDPlayer">
                <!--name这个值是根据setter方法名来确定的,所以手动装配setter是必须有的-->
                <property name="cd" ref="cd"/>
        </bean>
现在我们使用自动装配,不需要添加 <porperty>属性。

这是CDPlayer类:

package com.yykj;

public class CDPlayer {

    private CD cd;
/*    byName自动装配以及手动装配都与setter方法名有关,与属性无关。
    byType自动装配与setter中的参数类型有关*/
    public void setCd(CD cd) {
        this.cd = cd;
    }

    public void play(){
        cd.Play();
    }
}

测试类:

package com.yykj;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
//在测试时,不启动服务器,所以不会加载web.xml,要手动初始化spring配置文件
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
public class TestCD {

    @Test
    public void CDPlayerTest(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//获取上下文
        CDPlayer cdPlayer = context.getBean(CDPlayer.class);
        cdPlayer.play();
    }
}

自动装配有两种方式:

1.byName

在spring配置文件的<beans>标签中加入代码:dafault-autowire="byName"

被装配类中的setter方法还是需要的,因为是byName,所以setter方法名要与bean的id对应,比如bean的id为cd,那么setter方法名为setCd。

2.byType

在spring配置文件的<beans>标签中加入代码dafault-autowire="byType"。

被装配类中的setter方法的参数类型要与bean的class的类型一样,才能自动装配到。

注意:以上两种自动装配方法本质上都是通过反射,构造出对应的setter方法,然后执行setter方法。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值