我刚刚进入春天(我自己,所以我没有人问过愚蠢的问题)。
我对Spring的配置有几个问题(我使用的是3.0)。阅读手册,它说“主”配置是实例化所有bean的IoC容器之一。这样,当您实例化ApplicationContext时,您需要将xml与所有bean的配置位一起传递给它。
无论如何,当您使用Web MVC框架时,您实例化DispatcherServlet,然后创建一个包含servlet配置的名称的xml文件,并将您的内容放在那里。问题一:是这样吗?我的意思是xml文件代表我可以传递给applicationcontext构造函数的相同文件,还是那个不同的东西?如果我想配置整个applicationContext,我应该创建其他文件吗?怎么样?
更进一步,我看到调度程序servlet可能需要更多配置。就像你想要配置视图一样,如果要解析View bean和类似的情况,你必须编写一些配置。现在我看到很多教程都在谈论一个views.xml文件...这在手册中甚至没有提到(cntrl + f未找到)。我想知道这是程序员创建的文件,然后包含在DispatcherServlet中,或者是某个组件读取的默认值...我对此感到困惑。
我想知道整个ApplicationContext配置和dispatcherservlet之间的关系。如果存在其他xml文件的情况更多,我想知道在哪里可以找到相关的资源,因为文档非常混乱。
由于
答案 0 :(得分:3)
无论如何,当您使用Web MVC框架时,您实例化DispatcherServlet,然后创建一个包含servlet配置的名称的xml文件,并将您的内容放在那里。问题一:是这样吗?我的意思是xml文件代表我可以传递给applicationcontext构造函数的相同文件,还是那个不同的东西?如果我想配置整个applicationContext,我应该创建其他文件吗?怎么样?
虽然从理论上讲,您可以在一个单一的Web应用程序上下文中定义所有bean,但通常认为按功能拆分上下文是一种好习惯。
e.g。
您可以使用<import ...>
声明将这些上下文导入主Web上下文。
以下是春季参考文献中的相关部分:
答案 1 :(得分:3)
您也可以通过在web.xml中定义多个文件来分割applicationContext或servlet.xml
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/spring-beans1.xml
/WEB-INF/spring/spring-beans2.xml
</param-value>
</init-param>
查看此问题Use a ContextLoaderListener in accordance with DispatchServlet
当我开始使用spring时,我需要了解的一件事是,应用程序上下文的默认范围是 singleton ,而DispatcherServlet 请求的默认范围。这意味着虽然在应用程序启动时,ApplicationContext和DispatcherServlet都是startet,但如果从应用程序上下文中获取bean,只要应用程序正在运行,它就始终是相同的对象,而如果你得到的话来自 servlet.xml 的bean总是为每个http请求重新实例化。
applicationContext始终在servlet.xml中自动提供
自行获取applicationContext