我是Spring的新手,我正在创建一个简单的Web应用程序.我一直在阅读Spring MVC中的上下文.
我正在使用STS插件进行eclipse.我使用插件创建了一个Spring MVC项目.
现在我在项目中有三个xml文档,web.xml,root-context.xml和servlet-context.xml.这些是由STS为我创建的.
在web.xml中,调度程序servlet指向servlet-context.xml,我理解调度程序servlet作业是创建一个知道如何解析视图的Web应用程序上下文,并且是控制器bean存在的位置.我的理解是否正确?如果是这样,那么这个背景下还有什么其他工作呢?
现在,有一个名为root-context.xml的文件,它在我的项目默认包中有一个组件扫描.我的理解是这个上下文需要有许多servlet可能使用的全局bean.我的理解是否正确?这还有什么作用?使用此文件创建了什么样的上下文?
现在,我在项目中更进一步,我有几个*-context.xml文件(dao-context.xml,security-context.xml等),它们使用contextLoaderListner(在web.xml中)加载.这是一个好主意吗?或者一切都应该进入servlet-context.xml?我认为拥有不同的背景是一个好主意,因为它提供了关注的分离.评论?此外,从这些*-context.xml文件创建了什么样的上下文?这些文件的正确文件夹位置是什么?
Web.xml用于像tomcat等servlet容器,项目中的所有其他xml文件都用于spring容器.那是对的吗?所有这些文件是分开的,以提供关注的分离?
当前场景中存在多少个应用程序上下文和Web应用程序上下文?
为什么有人需要多个调度程序servlet?
为什么有人需要多个应用程序上下文?
思考?评论?更正?最佳做法?
背景
由于Spring MVC设计了standered servlets
,并促进相同的功能servlet context
和application context
.在春季存在两种类型的上下文ApplicationContext
和WebApplicationContext
-
ApplicationContext
初始化ContextLoaderListener
,每个应用程序的单个实例.
WebApplicationContext
每个人加载DispatcherServlet
.
我们可以理解上面这样ApplicationContext
延伸,WebApplicationContext
所以ApplicationContext
最终与之相关的东西都是其中的一部分WebApplicationContext
.
疑惑
ApplicationContextAware
提供哪个context
对象.
public class SomeThing implements ApplicationContextAware{
@Override
public void setApplicationContext(ApplicationContext ctx) throws BeanException{
//this context object is `ApplicationContext` or `WebApplicationContext`?
}
}
Run Code Online (Sandbox Code Playgroud)context
并且container
似乎是我们大多数人的同义词,我想举个例子.假设我们有两个调度程序servlet一个用于
rest
和另一个用于mvc
.
第一个调度员 -
public class …
Run Code Online (Sandbox Code Playgroud)