008*_*k89 9 java spring servlets
对于Spring,如果我有两个同时访问singleton bean的请求怎么办?一个请求是否必须等到另一个请求完成.Spring容器如何为我的请求找到单例bean实例?
对于servlet,如果我有两个请求同时访问普通类的正常方法(没有静态没有其他复杂的东西)?一个请求是否必须等到另一个请求完成以避免并发(同时两个请求正在尝试访问同一类的对象).Web容器如何找到我的请求的实例?
dev*_*per 18
对于Spring,如果我有两个同时访问singleton bean的请求怎么办?一个请求是否必须等到另一个请求完成?
Spring容器为单例bean类创建一个且只有一个实例(如Controller,Service类等).在Java中,有几种方法可以安全地为类创建单例实例,您可以在此处查看更多内容.一旦Spring容器创建了单例实例,那么将使用控制器/服务类的单个实例来提供Web请求.
此外,没有问题(即,两者之间不会有任何等待),即使两个请求访问单例bean,因为它们将在两个单独的线程中提供,而您需要确保的是您的控制器和服务类(即,singleton scoped beans)不携带/保持任何状态(即,它们是无状态的)并且是线程安全的.
Spring容器如何为我的请求找到单例bean实例?
Spring容器根据您使用xml或通过注释提供的配置创建然后注入单例bean实例.
对于servlet,如果我有两个请求同时访问普通类的普通方法(没有静态没有其他复杂的东西)?一个请求是否必须等到另一个请求完成以避免并发(同时两个请求试图访问同一个类的对象)?
不,每个请求都将在一个单独的线程中处理,因此一个请求不会等待另一个请求被提供/完成,换句话说,请求将被并行地提供/处理.这是通过使用/管理线程池的Web容器实现的.
Web容器如何找到我的请求的实例?
Web容器(如Tomcat等)创建并加载所有servlet类(如Spring DispatcherServlet或您自己的自定义servlet),然后一旦Web请求来自客户端(如Browser),它将根据servlet处理.该url-pattern配置在web.xml或通过注释.