如下,Spring-mybatis中,实现类中为什么可以注入一个接口呢?

@Service("userService")publicclassUserServiceImplimplementsIUserService{@Resourcepriv... @Service("userService")
public class UserServiceImpl implements IUserService {
@Resource
private IUserDao userDao; //就是这里,IUserDao这个接口,为什么可以注入呢?接口难道不是只能实现吗。这个spring注入进来的是个什么鬼。。。
@Override
public User getUserById(int userId) {
// TODO Auto-generated method stub
return this.userDao.selectByPrimaryKey(userId); //这userDao是接口了。接口还能直接调用方法吗。。。这什么操作
}

}
展开
 我来答
pardream941026
2018-04-02 · TA获得超过8217个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1343万
展开全部

这是spring-mybatis的机制,你在使用了mybatis的spring application.xml中,可找到mybatis的配置:

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />
   <property name="configLocation" value="/WEB-INF/spring/mybatis-config.xml"/>
   <property name="mapperLocations">
      <array>
         <value>classpath:com/xxx/*.xml</value>
      </array>
   </property>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
   <property name="basePackage" value="com.xxx"/>
   <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
</bean>

spring-mybatis将会解析xml,与对应的接口,组装成动态bean。spring-mybatis封装了这一过程,所以你只需要关注xml文件中对应接口的各个sql实现。
追问
大约就是一种spring mybatis配置好的特有机制嘛。如果是平常的java代码中就不可以这样用了吧
追答
那是肯定的了。
pieryon
2018-04-02 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166869
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
接口里面封装的是方法,可以有很多不同的实现,不知道你哪里不明白,那个@service注解是告诉spring容器来实例化这个实现类的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式