【发布时间】:2015-06-05 21:32:29
【问题描述】:
我在 Spring 中有一些应用程序,它会根据每个请求创建原型 bean X(来自工厂)。这个 bean X 有一些 DAO 单例,例如我工作的 Y、Z 和 SomeObject(设置值等)
@Scope(value="prototype")
public class X{
@Autowired
private Y y;
@Autowired
private Z z;
private SomeObject obj;
public void someMethod(){
obj.setProperty();
}
}
这是正确的方法吗?我的意思是,在每个请求中,Spring容器必须搜索那些单例bean并将它们注入原型,它有效吗?或者最好是创建无状态 bean 并以适当的方法创建 SomeObject 实例,然后在我想使用它时将它传递给函数参数(这不太舒服)?
【问题讨论】:
-
我假设
someMethod()将有效地使用y和z? (你能更正代码吗:X应该是类中的Y)。 -
是的,someMethod() 有效地使用 y 和 z 为 obj 生成一些数据。已更正。
-
但
SomeObject只是X的内部状态,它在对X的不同方法的各种调用之间保持某种状态,还是从X外部可见? -
是的,从外面可以看到。 X 是具有状态的原型 bean。
标签: java spring design-patterns