【发布时间】:2017-01-21 13:32:39
【问题描述】:
我对依赖注入有疑问,假设我的控制器、服务、dao 都是单例的,所以通常当我们创建控制器时,我们将服务作为该类的实例变量注入,但如果我们的控制器是单例模式,则根据stateless 那么只有我们不会遇到任何并发问题,但是在这里我们声明了服务依赖关系,所以它不应该是无状态的,所以我们必须注意同步?
由于我是初学者,请清除这个疑问,所以我希望很自然地有这个疑问,我不知道我是否完全错误地思考。请帮助。
【问题讨论】:
-
你认为你需要什么同步?
-
我只想知道,如果我是控制器类中的注入服务 bean,它本质上是单例的,那么这样做是不是让控制器本质上是有状态的?如果我这样做,我是否没有做错任何事情,因为到处都提到任何单例 bean 都应该是无状态的以防止并发。
-
为什么你认为服务不应该是无状态的?所有单例 bean 都应该是无状态的(线程安全的)
-
是的,你是对的,所有的单例 bean 都应该是无状态的,如果不是,那么不同的线程将共享相同的数据并导致问题。我发现了清晰的内存模型和了解 jvm 内存模型的好处,通过学习这个我可以做更好的设计。谢谢 :)
标签: spring spring-mvc