一、@Autowired可以注入实现类吗?
可以注入,也可以使用,并不会报错。
二、为什么通常情况下注入的都是接口?
往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术是通过动态代理实现的,而spring默认是JDK动态代理,JDK动态代理是利用反射机制生成一个实现代理接口的匿名类
可以看到jdk的动态代理是基接口的,这又是为什么呢?
$是动态代理中生成的代理类,可以看到他需要继承Proxy由于java的单继承,只能使用接口作为容器。
一、@Autowired可以注入实现类吗?
可以注入,也可以使用,并不会报错。
二、为什么通常情况下注入的都是接口?
往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术是通过动态代理实现的,而spring默认是JDK动态代理,JDK动态代理是利用反射机制生成一个实现代理接口的匿名类
可以看到jdk的动态代理是基接口的,这又是为什么呢?
$是动态代理中生成的代理类,可以看到他需要继承Proxy由于java的单继承,只能使用接口作为容器。