【发布时间】:2013-12-11 15:50:10
【问题描述】:
假设有一个应用程序在每次需要处理一些数据时都会创建一个 Task 类的实例。任务实例中注入了一些其他服务,但所有这些服务和任务对象本身在单个任务实例中都是唯一的。当然也注入了一些全局服务,但它们是真正的应用程序范围的单例。所以我的问题是配置注入本地(或作用域)单例实例的最佳方法是什么?我主要考虑使用子上下文,但如何正确配置它仍然是我的问题。还要提一提的是,我使用注解和基于 java 的配置。
【问题讨论】:
-
请显示需要
Task实例的代码。该代码是否可以访问ApplicationContext? -
所以你需要一些服务作为原型和一些单例?你能澄清一下这是什么意思吗
The task instance have some other services injected into it but all this services and the task object itself are unique within a single task instance -
This 实际上可能会帮助您。听起来我描述的工厂方法可能就是您想要的。
-
@SotiriosDelimanolis,当然可以,ApplicationContext 可以被注入。 Task 类是一个 spring 管理的 bean。
-
@Taylor,这里的想法是,当 IoC 容器引导 Task 类的实例时,一些依赖项被视为 Tasks 对象层次结构中的单例。 Task 的另一个实例将有自己的单例实例。所以这里的“单例”在任务中是有一定范围的或孤立的。您可以将每个 Task 实例视为一个带有自己的单例和原型的小应用程序。有意义吗?
标签: java singleton spring-ioc spring-java-config