概述
在使用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方法。
最后
以上就是笨笨麦片为你收集整理的Spring自动装配之byName和byType【Spring入门】的全部内容,希望文章能够帮你解决Spring自动装配之byName和byType【Spring入门】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复