学习Spring,偶然发现困难。如何通过构造函数或通过字段注入bean?我学会了通过XML配置来做到这一点,但是它不能通过注释来工作。这是我的代码。界面音乐:
public interface Music {
public String playMusic();
}
民间音乐类:
@Component
public class FolkMusic implements Music {
@Override
public String playMusic() {
System.out.println("FOLK");
return null;
}
}
HipHipMusic类:
@Component
public class HipHopMusic implements Music {
@Override
public String playMusic() {
System.out.println("HipHop");
return null;
}
}
音乐播放器类:
@Component
public class MusicPlayer {
ArrayList<Music> mu;
@Autowired
public MusicPlayer(ArrayList arrayList){
mu = arrayList;
}
public void playMusic(){
System.out.println("Size = " + mu.size());
}
}
搜索XML的组件:
<context:component-scan base-package="cam.mark.mus"/>
我应该如何重写代码,以便Spring自动将组件注入MusicPlayer类构造函数中?使用此代码,控制台中不会出现任何错误。结果显示为“大小= 0”
您需要使用List
而不是ArrayList
。还要确保您List<Music>
不在List
构造函数中传递。
MusicPlayer
应该看起来像这样:
@Component
public class MusicPlayer {
List<Music> mu;
public MusicPlayer(List<Music> arrayList) {
mu = arrayList;
}
public void playMusic() {
System.out.println("Size = " + mu.size());
}
}
您可以@Autowired
在构造函数上省略,因为只有一个构造函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句