我正在使用一个spring boot项目。我想了解不同上下文的目的和关系?
例如,Spring Security context、Spring Context、Servlet Context等(还有其他上下文吗?)
发布于 2016-03-07 05:09:50
可能会有不同的解释,但以下是我的看法:
在SecurityContext类的含义中,
“上下文”是一个非常通用的术语,因此在您的环境中可能还有其他上下文。
发布于 2016-03-06 12:27:36
有许多“上下文”,它们的加载方式取决于您初始化应用程序的方式。但通常情况下,大多数应用程序只有一个上下文,其中包含应用程序所需的所有bean和组件。
例如,如果使用Servlet加载应用程序,则可以使用“根上下文”加载整个应用程序,该“根上下文”也将Servlet上下文作为其子上下文加载。
层次结构类似于下面的"root" context
-> any other context
。就这么简单。
描述的here in the Spring Docs ApplicationContext
提供:
用于访问应用程序组件的
new()
以通用方式加载文件资源的功能,您就可以在应用程序中实现所需的功能。(具有properties和profiles)由于您使用的是Spring boot,因此默认情况下只有一个上下文:ApplicationContext
。这将包含您需要的所有东西(Beans)和组件。
事实上,这就是使用Spring boot的好处,最小的配置和简化的配置。如果您觉得需要多个上下文,我强烈建议您使用Profiles。
归根结底,“上下文”是由您的应用程序创建和定义的,可以将其视为定义您的应用程序的配置( XML或Java)。什么是“里面”,什么是“它需要”才能工作。
如果您想尝试更多地理解它,我强烈建议您从头开始阅读,并从Introduction to Spring开始。
发布于 2016-03-12 00:29:45
就系统设计而言,任何上下文都是公共功能和数据的集合,这些功能和数据在一个地方定义,但必须在程序中的任何地方使用。Context的主要目的是减少应用程序组件之间的依赖关系。Context的另一个目的是简化对常用功能和数据的访问。让我们考虑一下您在问题中列出的上下文。
ServletContext
ServletContext
是Servlet technology的一部分。许多框架都基于这种技术(JSF、Spring、Struts等)。ServletContext
包含与其Servlet容器(如Tomcat、Glassfish等)通信的功能。ServletContext
提供的基本功能:
容器运行时获取有关请求dispatching;
正如您所看到的,如果您将使用Servlet技术(例如,基于它开发另一个mvc框架),那么在应用程序中的任何地方都可以使用这些基本功能。
ApplicationContext
ApplicationContext
是Spring framework应用程序的主要接口。它有很多实现。一个是从xml文件(ClassPathXmlApplicationContext)加载配置,另一个是基于注释(AnnotationConfigApplicationContext)加载配置,以此类推。ApplicationContext
提供的基本功能:
基于来自不同来源(文件系统、jar文件、用于发布和侦听来自消息包的definitions;
)的bean definitions;
同样,在启动时初始化,这个基本功能几乎可以在应用程序的任何地方使用。这就是它收集到上下文的原因。在后台使用了许多类来提供此功能,但您必须知道,要使用此功能,只需使用ApplicationContext
。
SecurityContext
SecurityContext
提供对身份验证数据的访问。您可以获取认证用户的名称、角色等详细信息。该信息由安全模块初始化,可能在许多很多地方都需要。使用此信息的С组件对安全模块的类一无所知。他们只是从SecurityContext
获取所有需要的信息。
https://stackoverflow.com/questions/35772389
复制相似问题