这种设计的弹簧单例豆线安全吗?
考虑下面的春季服务类。定义的弹簧范围是单例。以下类中自动连接为字段的两个服务 Bean 具有相似的结构 - 它们也由以下任一字段组成
- 春豆本身
- 无状态类
- 不可变类
等等。此模式在应用程序设计中总体上使用。
@Service
public class DocumentService {
private final DocumentGenerationService documentGenerationService;
private final DocumentPublishService documentPublishService;
@Autowired
public DocumentService (DocumentGenerationService documentGenerationService,
DocumentPublishService documentPublishService) {
this.documentGenerationService = documentGenerationService;
this.documentPublishService = documentPublishService;
}
... methods follow
说 DocumentService 类是不可变的,因为不可能改变它的两个字段中的任何一个(这两个字段是只能由容器本身初始化一次的弹簧豆)是否正确?
无论如何,上面定义的 DocumentService Bean 可以被认为是线程安全的吗?如果遵循这种设计,那么整个应用程序也是线程安全的吗?