1 注解单例问题
component和Service和controller注解问题
三个注解都是单例。
突然一下发蒙,忘记了这个地方的注解的单例是什么意思。
spring框架怎么会使得一个类成为单例,一个类成为单例得把构造方法设为私有。spring框架也完成不了啊。
后来查阅资料发现,这里的单例是指被注解的类是多个请求对应着一个对象,还是来一个请求创建一个对象。
2 controller为何可以是单例?
因为controller中我们一般是不设有需要修改的属性,所以controller可以是单例的。当然其实就算有属性,但是属性和每次来的请求的内容无关,其实也是可以是单例的。
2 注解循环依赖问题
出现循环依赖的时机:通过属性注入不会有依赖问题,通过构造函数注入的时候才会出现循环依赖问题
原理分析:
比如A依赖B,B依赖A ,通过构造器注入。
这种方式下遇到A new A的时候,必须执行new B,B的构造函数又必须调A的构造函数创建A。这就是死结。
但是如果是属性注入,那么过程就是首先创建A,然后把B作为属性set到A中,从这个操作也能看出,
解析spring循环依赖策略:
https://www.cnblogs.com/lizo/p/7401287.html 此文对spring这个循环依赖从源码进行了分析
自测的结果:(环境springboot)
自测结论:通过构造函数注入的循环依赖会报错。