spring注解问题,spring是怎么知道往这个接口里注入实现类别对象的?
以前用xml做配置的时候,因为spring的bean配置有属性字段,看的很清晰,最近开始学习用注解配置,结果开始搞不明白原理了,示例如下
有一接口
public interface GameInfoService {}
有一实现了它的类
@Service
public class GameInfoServiceImpl implements GameInfoService {}
然后在另外一个类别里,有一个GameInfoService 对象
@Component("gameInfoAction")
public class GameInfoAction extends ActionSupport {
private GameInfoService gameInfoService;
@Resource
public void setGameInfoService(GameInfoService gameInfoService) {
this.gameInfoService = gameInfoService;
}
}
然后在实际运行中,通过测试得知,GameInfoAction 内部的gameInfoService接口实际上被注入了GameInfoServiceImpl对象
我的疑问是,为啥呢,这里的规则是什么,spring为啥会确定这里应该注入GameInfoServiceImpl对象,就因为GameInfoServiceImpl是唯一实现了gameInfoService接口的类别吗?如果实现了gameInfoService接口的类别不止一个,该用什么方法标示注入哪一个?