spring in action 学习笔记(六)通过setter注入bean属性

£神魔★判官ぃ 2022-06-07 02:56 246阅读 0赞

上几节中,我们主要创建了两个杂技师,来参加选秀大赛,并且通过构造器来注入相关的属性,如基本类型属性beanBags豆袋子,引用类型Poem。

这一节,演示spring的另一种依赖注入的方法,也是比较常用的方法。

首先,我们来创建一个很有天赋的音乐演奏家

  1. /**
  2. * Created by csucoderlee on 2017 10 08 16:12.
  3. * 一个乐器演奏家
  4. */
  5. public class Instrumentalist implements Performer{
  6. private String song;
  7. private Instrument instrument;
  8. public Instrumentalist() {
  9. }
  10. public void perform() {
  11. System.out.println(" 表演唱歌 歌曲为" + song + ":" );
  12. instrument.play();
  13. }
  14. public String getSong() {
  15. return song;
  16. }
  17. public void setSong(String song) { // 注入歌曲
  18. this.song = song;
  19. }
  20. public Instrument getInstrument() {
  21. return instrument;
  22. }
  23. public void setInstrument(Instrument instrument) { // 注入乐器
  24. this.instrument = instrument;
  25. }
  26. }

这个演奏家,有两个属性,一个是基本类型的歌曲song属性,一个是引用类型的属性乐器instrument。

  1. /**
  2. * Created by csucoderlee on 2017 10 08 16:14.
  3. * 定义乐器接口
  4. */
  5. public interface Instrument {
  6. public void play();
  7. }

由于这个类有一个默认的构造器方法,所以在spring采用下面的xml配置一个

  1. <bean id="kenny" class="com.springinaction.ch02.Instrumentalist"/>

虽然spring把kenny实例化一个Instrumentlist类型的对象没有任何的问题,但是kenny没有歌曲(song) 和乐器(instrument),是无法进行演奏表演的。

所以,我们要学习如何通过setter方法,给这个演奏家注入相关的值。

首先,我们先创建一个具体的乐器萨克斯

  1. /**
  2. * Created by lixiang on 2017 10 08 16:27.
  3. */
  4. public class Saxophone implements Instrument{
  5. public Saxophone() {
  6. }
  7. public void play() {
  8. System.out.println("TOOT TOOT TOOT");
  9. }
  10. }

然后,在配置文件中,进行配置注入演奏家的这两个私有属性

  1. <bean id="saxophone" class="com.springinaction.ch02.Saxophone"/>
  2. <bean id="kenny" class="com.springinaction.ch02.Instrumentalist">
  3. <property name="song" value="我的秘密"/>
  4. <property name="instrument" ref="saxophone"/>
  5. </bean>

上面的配置,就为kenny这个演奏家注入了歌曲和乐器的属性,和构造器注入没啥太大的区别,只不过是将constuctor-arg 换成了property

发表评论

表情:
评论列表 (有 0 条评论,246人围观)

还没有评论,来说两句吧...

相关阅读