我是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,我可以选择四个选项。
我发现我的依赖树中没有WebApplicationContext
。 (我不依赖于spring-webmvc
)
我打算选择ConfigurableBeanFactory.SCOPE_PROTOTYPE。
我选择的范围是否会使MyService安全?我的意思是任何两个或更多客户端都不能注入相同的服务实例? Spring容器会处理它吗?
答案 0 :(得分:1)
实际上,Request
,Session
,Global-session
和Application
范围仅在Web感知应用程序上下文中可用。
Singleton
(单个实例每个Spring 容器)是Spring使用的默认范围,因此使用原型范围将保证将创建新实例并将其返回给客户端,因此是在这种情况下,您需要Prototype
。