2012-12-08 35 views
13

我的Web应用程序使用的Spring IoC。因此,我所有的Spring bean都是单例(默认情况下)。如果两个请求尝试访问单个类的两种不同方法。例如:MySpringBean是它有两个方法searchRecord,并在同一时刻这两种方法insertRecord methods.If都试图通过同一个bean访问类。怎样的Spring bean处理并发

请问该怎么做的Spring bean都可获得的客户端在同一时间,或者它会是并发问题时,双方请求将尝试访问两种不同的方法,但通过相同的Spring bean。并且由于spring bean是单例的,所以不能形成新的实例。在这种情况下,这是如何工作的?

回答

4

如果bean是一个单,那么Spring会给你在任何线程相同的实例。这是由你来使这个bean线程安全的。既然它是单身人士,那么最好让这个班级成为无国籍人。

4

正如其他人已经指出,春季是要提供相同的实例中的“单身”豆情况下,所有的线程。

你需要明白的是,由线程执行的代码,而对象提供状态和行为(代码)做一个系统的所有工作。所以对于多线程(在你的情况下请求)确实可能在单例bean中同时运行相同的方法。你可以让Tomasz建议的这些bean成为无状态的,或者使它们成为“线程安全的”。