0

我在 MVC Spring 3 设计中从 Controller->Service 有 2 层。我也有一些私人服务。现在,我的问题是,由于默认范围定义为 Singleton,它们是线程安全的吗?

这是代码的样子:

StatController.java:

// statics
@Controller
@RequestMapping("/stat")
public class StatController {
    @Autowired
    private StatManager statManager;
    ...
}

StatManager.java

public interface StatManager {
    public File statExec(StatCriteria criteria) throws IOException;
}

StatManagerImpl.java

@Service("statManager")
public class StatManagerImpl implements StatManager {
    private Hashtable<Long, Result> hashtableResult = null;

    private void initialization() {
         this.hashtableResult  = null;
         // ....
    }

    @Override
    public File statExec(StatCriteria criteria) throws IOException {
         this.initialization();
         // HERE: processing request. need update to & get values from this.hashtableResult
         this.hashtableResult  = null;
    }
}

如果 2 个会话 S1 和 S2 在同一时刻请求统计 => StatManagerImpl.hashtableResult 的值可以吗?

非常感谢 dsea

4

1 回答 1

0

不会好的。Spring bean 默认是单例的。您不应该在 Spring benas 中存储状态。他们应该是无国籍的。

于 2013-05-23T08:06:05.657 回答