关于Spring的接口和其实现类的注解问题

jacksonary 2017-04-27 08:24:47
本人是Spring新手,最近在啃Spring的注解的时候,发现一个问题,百度谷歌了很多,搜索无果,来求助各位,下面看问题,我定义了一个接口,上面并没有加Spring的注解,后来写了一个该接口的实现类(这个实现类上加了Spring管理的注解),在测试的时候,通过IOC容器获取bean的时候,获取的是其实现类的bean,但类型为什么写的却是接口的类型,不是实现类的类型,而且如果写成实现类的类型,测试会报错!,麻烦会的同学帮忙解答下,不胜感激!
...全文
1582 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
conquerCode 2020-01-09
  • 打赏
  • 举报
回复
楼主可以研究下多态
一字马 2018-01-26
  • 打赏
  • 举报
回复 1
因为spring创建的是实现BookShopService的代理类,并不是BookShopServiceImpl,所以强转成BookShopServiceImpl是错误的,代理类并不是这个类型。
画心_sky 2017-04-28
  • 打赏
  • 举报
回复
新手,顶一下,没用过这种开发模式,也是刚接触,有点懵逼,不过如果获取dao报错还是实现类报错?
  • 打赏
  • 举报
回复
第二张图,注解中有指定名称
jacksonary 2017-04-27
  • 打赏
  • 举报
回复
引用 3 楼 qnmdcsdn 的回复:
[quote=引用 2 楼 jacksonary 的回复:] [quote=引用 1 楼 qnmdcsdn 的回复:] 第二张图,注解中有指定名称
对呀,是在实现类上注解了,可是并没有在接口上注解,那获取的时候不是应该写成bookShopDao = (bookShopDaoImpl)ctx.getBean("bookShopDao")嗎?我主要是对这里的类型强转表示不太明白,明明是实现类的类型,为什么要转成BookShopDao的接口类型[/quote] 面向接口编程,这是编程思想[/quote]
引用 3 楼 qnmdcsdn 的回复:
[quote=引用 2 楼 jacksonary 的回复:] [quote=引用 1 楼 qnmdcsdn 的回复:] 第二张图,注解中有指定名称
对呀,是在实现类上注解了,可是并没有在接口上注解,那获取的时候不是应该写成bookShopDao = (bookShopDaoImpl)ctx.getBean("bookShopDao")嗎?我主要是对这里的类型强转表示不太明白,明明是实现类的类型,为什么要转成BookShopDao的接口类型[/quote] 面向接口编程,这是编程思想[/quote] =========================================================================================== 可以给小菜鸟说的详细点嗎,到目前为止只听过OOP没听过面向接口变成
  • 打赏
  • 举报
回复
引用 2 楼 jacksonary 的回复:
[quote=引用 1 楼 qnmdcsdn 的回复:] 第二张图,注解中有指定名称
对呀,是在实现类上注解了,可是并没有在接口上注解,那获取的时候不是应该写成bookShopDao = (bookShopDaoImpl)ctx.getBean("bookShopDao")嗎?我主要是对这里的类型强转表示不太明白,明明是实现类的类型,为什么要转成BookShopDao的接口类型[/quote] 面向接口编程,这是编程思想
jacksonary 2017-04-27
  • 打赏
  • 举报
回复
引用 1 楼 qnmdcsdn 的回复:
第二张图,注解中有指定名称
对呀,是在实现类上注解了,可是并没有在接口上注解,那获取的时候不是应该写成bookShopDao = (bookShopDaoImpl)ctx.getBean("bookShopDao")嗎?我主要是对这里的类型强转表示不太明白,明明是实现类的类型,为什么要转成BookShopDao的接口类型

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧