错误代码:

Service层接口interface PCI{}
接口实现类@Serviceclass PCIImpt imeplements PCI{}Controller层@Autowiredprivate PCIImpt pciImpt;    //注入了实现类

在没有使用maven管理的时候注入实现类编译一直未报错,也就是说编译可以通过,但是使用maven管理后,编译报错。
而正确的写法:

Controller层@Autowiredprivate PCI pci;    //注入接口以Autowired自动接收
结果:编译通过;

结论就是:注入的是实现类对象,接收的接口;理解为多态;(Controller–Service–ServiceImpt–Mapper)


要遵循Controller–Service接口–ServiceImpt实现类–Mapper接口模式

那么在Service接口有多个ServiceImpt实现类的情况,就需要指定参数名来选择哪个ServiceImpt实现类了。

Service层(此时有两个接口实现类)@Service("PCIImpt1")class PCIImpt1 imeplements PCI{}@Service("PCIimpt2")class PCIImpt2 imeplements PCI{}Controller层@Resource(name="PCIimpt2")  //填PCIimpt1,注入PCIimpt1实现类,填PCIimpt2,则注入PCIimpt2实现类private PCI pci;    //注入接口以Resource手动指定接收

同理:在ServiceImpt实现类中也是通过Mapper接口来接收;即:

ServiceImpt实现类@Autowiredprivate Mapper mapper;

为什么Controller层注入的是Service接口,而不是ServiceImpl实现类相关推荐

  1. springboot中service层注入的是实现类,但Controller层接收的是接口

    我们习惯这样编写代码: 在service层写接口,然后用实现类去实现接口,并且将实现类注入到容器中 @Service public class AccountServiceImpl implement ...

  2. mybatis Dao层 Mapper层 controller层 service层 model层 entity层 简介

    简介 SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保 ...

  3. controller的异常处理以及service层的事务控制___controller层 trycatch不影响service层抛出的异常

    controller的异常处理以及service层的事务控制 最近写代码涉及到一些事务,上午终于把代码给理顺了,之前不太清楚在哪里做异常处理,导致代码遍地try-catch,相当难看. 还是基于con ...

  4. SpringBoot中在除controller以外注入service-过滤器中注入

    一般我们都是在controller层注入service那么如何在过滤器中注入service呢 一般使用过滤器在启动类中添加如下代码 1 @SpringBootApplication 2 @Mapper ...

  5. 为啥SpringBoot更多普遍采用Controller+Service接口层+ServiceImpl接口实现层

    为啥SpringBoot更多普遍采用Controller+Service接口层+ServiceImpl接口实现层? 为解决移植性问题而产生的套路 2005年以前的大多数项目都是直接在业务处理层的Ser ...

  6. Jfinal-Controller层注入Service空指针异常

    代码 Controller层 @Path("/hello") public class HelloController extends Controller {@InjectUse ...

  7. 为什么要用impl继承service层_讨论:Service层需要接口吗?

    阅读本文大概需要 5 分钟. 前几天刷头条又刷到了「Service层和Dao层真的有必要每个类都加上接口吗?」这个问题,之前简单回答了一波,给出的观点是「看情况」现在结合我参与的项目以及阅读的一些项目 ...

  8. java domain层_java框架中的controller层、dao层、domain层、service层、view层

    1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...

  9. java 框架 Dao层 Mapper层 controller层 service层 model层 entity层 简介

    目录 简介 entity层 mapper层 service层 controller层 简介 SSM是sping+springMVC+mybatis集成的框架. MVC即model view contr ...

最新文章

  1. 程序员的周末:纯野的一天
  2. python爬虫实战(一)--------中国作物种质信息网
  3. before css 旋转_七夕,当然少不了纯CSS的点缀啦
  4. helm uninstall命令的使用:卸载Release
  5. mysql数据库连接关闭_解决mysql数据库连接自动关闭问题
  6. 互联网产品之百万级高并发技术整体架构
  7. java中Collection和Collections的区别和联系
  8. 离散数学及其应用 第二章:计数问题
  9. 什么是Instagram直播购物?如何设置Instagram 直播购物?
  10. 开源电子书项目FBReader初探(三)
  11. Unity 弹道轨迹
  12. 带你读懂Pinbar交易信号
  13. 安卓开发——拍照、裁剪并保存为头像报错:裁剪图片无法保存的
  14. 360应用宝上架流程及所需材料
  15. 操作系统实验八:页面置换模拟程序设计
  16. TCP延迟确认机制和SACK
  17. 2017年、2019年全国大学生电子设计竞赛综合测评——常用电路Multisim仿真——方波、三角波振荡电路
  18. Qt入门(九)——“头脑风暴”(在线答题_*重点项目*)
  19. 双向链表 - DoubleLinkedList
  20. 真正最简单的破解网吧下载(可用)

热门文章

  1. 世界粮农组织五大健康食品_粮农组织的完整形式是什么?
  2. suse leap_Ruby程序检查leap年
  3. 在JavaScript中以Hours24:Minutes:Seconds格式获取当前时间
  4. 华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...
  5. tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议
  6. android 中 gravity 和 layout_gravity 的区别
  7. Linux ubuntu安装搜狗输入法
  8. latex在texstudio中编译tex文件不显示攻读硕士学位期间取得的成果
  9. mysql 备份 php_PHP备份/还原MySQL数据库的代码
  10. 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...