傻瓜式app制作,宁波网络推广优化公司,展板设计用什么软件,企业网站模板下载服务哪家好我们习惯这样编写代码#xff1a;
在service层写接口#xff0c;然后用实现类去实现接口#xff0c;并且将实现类注入到容器中
Service
public class AccountServiceImpl implements AccountService {}在controller层却是用接口操作service的bean的方法#xff0c;
Auto…我们习惯这样编写代码
在service层写接口然后用实现类去实现接口并且将实现类注入到容器中
Service
public class AccountServiceImpl implements AccountService {}在controller层却是用接口操作service的bean的方法
Autowired
private AccountService userService;为神魔这样
理解
1注入的就是实现类只不过拿接口来接收接受的类型为接口面向接口编程那么为何要面向接口编程这就涉及到使用接口做代理因为通过autowired的对象是通过接口的方式会使用jdk动态代理jdk动态代理只能对实现接口的类生成代理而不能针对类。
2注入的是实现类对象接收的是接口理解为多态
如果一个service接口有多个实现类呢
controller类中使用resource并通过byname的方式注入不要用autowired这种通过类型的方式了
Service层此时有两个接口实现类 Service(PCIImpt1)class PCIImpt1 imeplements PCI{}Service(PCIimpt2)class PCIImpt2 imeplements PCI{}Controller层
Resource(namePCIimpt2) //填PCIimpt1注入PCIimpt1实现类填PCIimpt2则注入PCIimpt2实现类
private PCI pci; //注入接口以Resource手动指定接收Service注解是放实现类上的而非接口上
今天用springboot写多模块项目写完第一个Controller类注入的Service接口是ok的然后写第二个Controller类就一直报错。这把我给搞懵逼了为什么我第一个Controller没错第二个错了我代码都一样的啊。
我看他说没扫描到就去看了下Service注解有啊。然后我再去看包名也对的啊。多模块下面每个模块的包名都一样的能够被SpringBootApplication扫描到啊彻底蒙圈了。
看来看去我都没找到哪里错了好吧1个半小时过去了我自己找不到去百度去问人。这是越来越蒙圈百度要不是说包名要一样要不就是说SpirngBootApplication扫描同级及下层所有子包我都知道啊概念清楚也没错包名我又再对了一遍。然后再就是手动扫描自己额外写注解无论是ComponentScan和SpirngBootApplication(“xx”)我都试了中间倒是掌握了个小知识——手动用注解扫描的话记得还要手动把SpringBootApplication注解所在的类的所在包一起扫进去。
3个小时了我彻底放弃了。准备重来一次重新上git拉了个模板把自己的代码文件一个一个拉过去以前出现过一次两个项目代码完全一样的就是一个对了一个出问题现在怀疑是当时导入的maven依赖有冲突一个运气好莫名其妙对了一个运气差拉着拉着我就 发现刚才好像有个文件没有Service啊额。再一看好吧还真没有把Service写到接口上去了Impl实现类上没有Service额。无语只能恨自己眼瞎看包名看了一遍又一遍就是没看Serivce到底放在什么位置。
总结一下老老实实跟着IDEA的报错去找这要是老老实实从service类开始开细心一点三个小时就不会浪费了。也是自己技能没掌握扎实我估计是当时犯浑没搞清Service放接口和放实现类上的差距
过了1个多星期了这几天复习了springspring可以管理部分工具类但是不可以管理接口也就是ControllerComponentRepositoryService不能放接口上。