【发布时间】:2011-09-19 03:35:12
【问题描述】:
考虑以下 Spring Service 类。定义的弹簧范围是单例。在下面的类中自动连接为字段的两个服务 bean 具有相似的结构 - 它们也由以下任一字段组成
- Spring 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 类是不可变的是否正确,因为不可能改变它的两个字段中的任何一个(它们是只能由容器本身初始化一次的 spring bean)?
无论如何,上面定义的 DocumentService bean 可以被认为是线程安全的吗?如果遵循这种设计,整个应用程序也是线程安全的吗?
【问题讨论】:
标签: java multithreading spring concurrency singleton