0

下面的 bean 是无状态的,因此是线程安全的吗?更具体地说,我担心的是 String 数组的注入值。这会干扰 bean 的状态吗?没有权利?

public class ServiceImpl implements Service {

private static final Logger LOG = Logger.getLogger(ServiceImpl.class);

/* Injected values properties file. */
private String[] values;

@Autowired
private DAO dao;


@Transactional
@Override
public void invoke(String submissionId) {

    dosomething....
}
}
4

3 回答 3

3

这里要问的主要问题是

什么是无状态对象?

答案是,如果它的属性在其生命周期内没有改变,那么你的 Object 就是无状态的。我假设您的 bean 的范围为 a singleton,因此,只要该values属性在您的 bean 的生命周期内没有更改,它就是无状态的。否则不行。

于 2013-03-07T10:29:37.567 回答
0

如果你在初始化之后不修改属性(或者你的bean引用的对象的属性),那么bean是有效的无状态的。无论您使用哪种类型。

因此,如果您不修改数组或其项目之一,那么您的 bean 就是有效的无状态/有效的不可变的。

于 2013-03-07T10:28:32.593 回答
0

values如果对数组没有写访问权限,则它是无状态的。否则,您可能会遇到错误。

于 2013-03-07T10:26:58.683 回答