【发布时间】:2010-10-15 22:25:57
【问题描述】:
对 java 的了解不够,在单服务器 tomcat 应用程序中列出和更改 spring java bean 中的 DTO 对象时是否需要担心并发问题?
【问题讨论】:
标签: java spring concurrency javabeans
对 java 的了解不够,在单服务器 tomcat 应用程序中列出和更改 spring java bean 中的 DTO 对象时是否需要担心并发问题?
【问题讨论】:
标签: java spring concurrency javabeans
简而言之,是的。 Spring Beans 通常可以被多个线程共享。请特别注意 Spring Bean 中的成员变量。如果它们是可变的,要么使它们不可变,要么通过锁(例如同步)、ThreadLocal 等来协调访问。
【讨论】:
这是您需要问自己的问题。有没有办法让两个线程访问 same DTO?我想在任何健全的架构中都没有。
Spring bean 本身通常是单例的(如果没有进行其他配置),应该是线程安全的。
如果所有 bean 都接收 DTO 作为参数,返回新创建的 DTO,并且这些 bean 的所有客户端都不会保留引用,那么 DTO 应该不是问题。至少从高层次的角度来看。
但是,您应该阅读有关 java 并发的内容。如果有机会,我会推荐Goetz's book。
最后,我记得 Rod Johnson(springsource 的策划者)说 DTO 是邪恶的。请花一些时间在 Google 上搜索“DTO evil”并做出决定。
【讨论】: