春季不同语境的目的与关系
我正在使用弹簧靴项目。我想了解不同语境的目的和关系吗?
例如,Spring Security context,Spring Context,Servlet Context等(还有其他上下文吗?
我正在使用弹簧靴项目。我想了解不同语境的目的和关系吗?
例如,Spring Security context,Spring Context,Servlet Context等(还有其他上下文吗?
可以有不同的解释,但这是我的看法:
Spring Security上下文,在SecurityContext类的含义中,包含有关当前用户的身份验证,用户名,权限(角色)以及可能的其他信息。此类上下文的生存期是当前请求,或者安全上下文在使用会话的请求之间持久化。
Spring Context,在 ApplicationContext 类的含义中,是正在运行的 Spring 应用程序的中心点。它的主要目的是包含应用程序单例bean,但它具有许多其他漂亮的功能(在另一个答案中提到了几个)。一个应用程序可以有多个 ApplicationContext,但最常见和最简单的情况是,它只有一个。Web应用程序通常使用WebApplicationContext“扩展”,它将其与Servlet上下文集成。
Servlet Context,ServletContext类的含义,是Servlet webapp具有的应用程序范围上下文。在像Tomcat这样的servlet容器中,每个webapp实例总是只有一个。它不是春天的一部分。使用Spring时,您很少直接使用它。但它在后台。
“上下文”是一个非常通用的术语,因此您的环境中可能还有其他上下文。
有许多“上下文”,它们的加载方式取决于您初始化应用程序的方式。但通常大多数应用程序都有一个上下文,其中包含应用程序所需的所有 Bean 和组件。
例如,如果您使用 Servlet 加载了一个应用程序,则可以使用“根上下文”加载整个应用程序,该上下文也会将 Servlet 上下文作为子上下文加载。
层次结构类似于以下 ->。就是这么简单。"root" context
any other context
春季文档中描述的A提供了:ApplicationContext
new()
)当您使用 Spring boot 时,默认情况下只有一个上下文:.这将包含您需要的所有东西(Bean)和组件。ApplicationContext
事实上,这就是使用Spring Boot,最小配置和简化配置的美丽之处。如果你觉得你需要多个上下文,我会敦促你使用配置文件来代替。
最终,“上下文”由您的应用程序创建和定义,将其视为定义应用程序的配置(无论是XML还是Java)。什么是“在其中”,什么“需要”才能工作。
如果你想尝试和理解它更多,我会敦促你从头开始阅读,并从春季介绍开始。