在Spring MVC中,单例bean是否是线程安全的?

时间:2014-11-11 07:30:20

标签: spring spring-mvc

假设我们有以下bean:

@Service
public class AccountService {
    private String name;

    public String sayHello(String name) {
        this.name = name;

        return "hello, " + this.name;
    }
}

在Spring MVC中,如果多个用户同时调用sayHello()方法但传递不同的参数,他们会得到正确的问候语响应吗?

我只是想知道多个线程会同时修改同名变量吗? 非常感谢!

2 个答案:

答案 0 :(得分:1)

看看这个answer

总结......这两个概念完全不同,因为线程安全与bean本身的代码有关,并且与它的实例化无关。

我希望它有所帮助。

**评论后更新**

您可以尝试这样的事情:

<强> Greetings.java

public class Greetings {
    private String name;

    public Greetings (String name) {
        this.name = name;
    }

    public String sayHello () {
        return "Hello, " + this.name;
    }
}

<强> AccountService.class

@Service
public class AccountService {
    public String sayHello (String name) {
        Greetings greetings = new Greetings(name);
        return greetings.sayHello();
    }
}

答案 1 :(得分:0)

也许最好的解决方案是将范围从singleton更改为request