每个Web请求都会生成一个新线程,如该线程中所述。
Spring管理不同的作用域(原型,请求,会话,单例)。如果两个同时请求访问一个单例bean,则该bean必须是无状态的(或至少是同步的,以避免出现问题)。如果你在范围请求中访问bean,则将为每个请求生成一个新实例。Spring为你管理此事务,但你必须小心并为bean使用正确的作用域。通常,你的控制器是单例,但
AppModel必须是作用域
request,否则你将有两个同时请求的问题。
关于你的最后一个问题“魔术是如何发生的?”,答案是“方面/代理”。Spring创建代理类。你可以想象Spring将为你的AppModel类创建一个代理。一旦你尝试在控制器中访问它,Spring就会将方法调用转发到正确的实例。



