gpt4 book ai didi

java - bean 中方法属性的可见性(线程安全与否?!)

转载 作者:行者123 更新时间:2023-11-30 04:58:36 25 4
gpt4 key购买 nike

我只是在想这个。如果我在 Spring 有 dao bean,并且该 dao bean 有一个 protected /公共(public)属性“currentSQL”。对于所有并发请求,该属性的值是否“可见”?

示例:

@Component
public class FooDAO {

@Autowired
private DataSource dataSource;

private String currentSQL;

public void doSome()
{
currentSQL = "Foo SQL query";
}

public String getSome()
{
return currentSQL;
}
}

上面示例中的 currentSQL 属性对于每个请求是否安全?

最佳答案

这取决于您如何设置 FooDAO bean 的范围。

<bean id="fooDAO" class="-" scope="prototype"/>

对于 fooDAO 上的每个访问(请求),spring 都会创建一个新的 FooDAO 实例。那么它就可以被认为是线程安全的,只要你的本地线程不使用同一个 FooDAO 实例。如果是这种情况,您必须使用“public synchronized void doSome()”处理线程访问

<bean id="fooDAO" class="-" scope="singleton"/>

如果你的bean是单例的,那么它就不是线程安全的。单例实例在您的应用程序之间共享。如果是这种情况,那么您必须同步该方法。

关于java - bean 中方法属性的可见性(线程安全与否?!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com