弹簧布线,单件与原型

时间:2010-01-01 17:50:17

标签: java spring dependency-injection

只是读取弹簧,当在弹簧中使用DI时,如果将bean设置为单例(默认),则该类的单个实例将被“分配”,而原型每次都会强制执行一个新实例

每次让容器分配相同实例的后果是什么? 这是否意味着会有共享状态?

即。如果在某处修改了实例,所有未来的对象创建实际上都会变成“脏”对象而不是“新”对象?

4 个答案:

答案 0 :(得分:2)

由于您通常使用Spring编程接口,因此DI管理的对象无需担心状态。在这种情况下,并不担心“脏”。存储库,服务,控制器 - 所有应该很少或根本没有可说的状态。

答案 1 :(得分:1)

如果将Spring管理的bean的范围声明为单例,是的,则会有共享状态。通常,您不会像使用servlet时那样避免使用不适当的实例变量。但是控制器的状态将包括它调用的服务,服务的状态将包括对它使用的数据访问对象的引用。

答案 2 :(得分:0)

单身对象就是这样。注入单例的每个对象都会获得对同一对象的引用。该对象的任何更改都将(通过行为或其他方式)显示给该对象的所有使用者。

答案 3 :(得分:0)

当然,除非使用某种同步,否则应该避免在单例会话bean中维护状态。理想情况下,单身人士不应该有实例字段。当您需要以对话方式维护状态时,请使用有状态bean。完成有状态bean之后,必须明确删除它,否则手上会漏掉内存。