【发布时间】:2015-02-07 08:52:40
【问题描述】:
我是 Spring 新手。
我正在开发一个依赖于spring-context 的库项目。
@Scope(value = "@@?")
@Service
public class MyService {
@PostConstruct private void constructed() {
}
@PreDestroying private void destroying() {
resource.clear();
}
public void doSome() throws IOException {
// try{}finally{} is not the case
resource = getSome();
doSome(resource); // may throw an IOException
resource.clear();
}
private transient MyResource resource;
}
我想在每次这个实例被销毁时释放resource。
根据@Scope,我可以选择四个选项。
- ConfigurableBeanFactory.SCOPE_SINGLETON
- ConfigurableBeanFactory.SCOPE_PROTOTYPE
- WebApplicationContext.SCOPE_REQUEST
- WebApplicationContext.SCOPE_SESSION
我发现 WebApplicationContext 在我的依赖关系树中不可用。 (我不依赖spring-webmvc)
我打算选择ConfigurableBeanFactory.SCOPE_PROTOTYPE。
我选择的范围是否会使 MyService 安全?我的意思是任何两个或多个客户端都不能注入同一个服务实例? Spring 容器会处理它吗?
【问题讨论】: