spring bean一般用在什么范围?

问题描述 投票:0回答:1

对于基于 Spring 的 Java Web 应用程序,如何使用 Spring beans 高效地构造控制器、服务、DAO 类?

目前我的结构是这样的

TestController.class
(原型范围)→
TestAPI.class
(原型范围)→
TestService.class
(单例范围,即默认)

我在

TestService.class
中使用了 Singleton 作用域,因为它只包含 utils。

这是正确的做法还是我应该使用基于线程、会话的范围? 业界对此的普遍做法是什么?

java spring spring-boot javabeans
1个回答
0
投票

一般来说,除非绝对必要,否则您应该始终选择单例范围。事实上,通常很少使用任何其他类型的范围,并且仅在非常特殊的情况下才会使用。

在决定范围时,您应该始终问的问题是“该对象需要维持什么状态?”。一般来说,答案应该是“无”。只要有可能,您就应该始终争取无状态 bean。但是,如果您希望能够将某种状态注入到对象中,那么问题是,该状态的范围是什么?例如,此状态的范围是否仅限于请求、是否仅限于方法的特定调用、是否仅限于用户会话?

话虽如此,默认情况下始终应该使组件无状态,并且仅在必要或有利时才偏离此设置。

© www.soinside.com 2019 - 2024. All rights reserved.