问题
为什么xxxController注入的是xxxService,而不是xxxServiceImpl?
controller---->service接口
表面注入的是接口,实际注入的是实现类对象(实现类唯一)。
controller---->serviceImpl实现类
可以对实现类增强,如事务、日志等(AOP动态代理实现)。
结论
@Autowired的对象是通过接口的话,Spring默认会使用jdk动态代理,jdk动态代理只能对实现了接口的类生成代理,而不能针对类,而且还可以对实现类对象做增强得到增强类(增强类与实现类是兄弟关系,增强类不能用实现类接收增强类对象,只能用接口接收)。