java - Spring - 使用 applicationContext.xml 和 XXXXX-servlet.xml

标签 java model-view-controller spring frameworks

我正在将 Spring MVC 集成到我一直在从事的现有项目中。通过集成,我的意思是我正在使用 Spring 重写该项目,并使用我的大部分旧代码。我已经搭建好环境并开始着手工作。我将此项目称为 ProjectX

我已经设置并配置了保存 View 解析器 bean 和 Controller bean 等的 ProjectX-servlet.xml。我想设置一个 applicationContext.xml 文件,我可以将所有 DAO bean 放入其中,例如 ...

<bean id="MemberDAO" class="com.xxx.xxx.MemberDAO"/>
<bean id="ProductDAO" class="com.xxx.xxx.ProductDAO"/>

我希望这些值位于 applicationContext.xml 中,以便在我的 Controller 中我可以执行以下操作。

public SomeController extends SimpleFormController{

   private MemberDAO memberDao;
   private ProductDAO productDao;

   ...getter/setter methods for memberDao;

   ...getter/setter methods for productDao;

并且这些值将可用(将它们注入(inject) Controller )

我已经在 ProjectX-servlet.xml 中配置了 Controller ,如下定义。

<bean name="/SomeController.thm" class="com.xxx.xxx.controllers.SomeController">
      <property name="memberDao" ref="MemberDAO"/>
      <property name="productDao" ref="ProductDAO"/> 
</bean>

我相信我需要在 web.xml 中配置如下内容,以便它知道加载应用程序上下文。

  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

  <servlet>
   <servlet-name>context</servlet-name>
   <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>

我的问题是,创建 applicationContext.xml 文件后我必须做什么,才能执行上面显示的操作并注入(inject)诸如 ProductDAOMemberDAO 到我的 Controller 中,这些 Controller 在 ProjectX-servlet.xml

中配置

我已经在契约(Contract)中使用 Spring MVC 几个月了,并且对如何使用它很满意,但我对自己配置它、供自己使用还很陌生,所以如果有任何建议或答案,我将不胜感激对我来说解释得更容易一些。

谢谢

最佳答案

按照惯例,您为 DispatcherServlet 实例指定的名称将与 {name}-servlet.xml 关联。正如您所描述的,此上下文将是 applicationContext.xml 的子级,这意味着它将有权访问 applicationContext.xml 中的 bean。

web.xml 中尝试以下操作:

<servlet>
        <servlet-name>ProjectX</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>ProjectX</servlet-name>
        <url-pattern>/projectx/*</url-pattern>
</servlet-mapping>

关于java - Spring - 使用 applicationContext.xml 和 XXXXX-servlet.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495247/

相关文章:

java - 如何在对象映射器中将时间戳映射到日期

java - java中的输出流

PHP - MVC 应用程序中工作单元应位于何处?

spring - 自定义属性编辑器不适用于 Spring MVC 中的请求参数?

java - 渲染 JSP 页面后设置 ng-model

java - StringEntity 的 Spring REST Controller

java - 从 tomcat 服务器中的 webapp 调用 java 程序 - java 程序在 tomcat 服务器之外

ruby-on-rails - 如何将一个模型多次连接到另一个模型?

asp.net-mvc - 创建数字为 1 到 30 的下拉列表 mvc

java - 为什么在服务器启动时正确注入(inject)的 spring bean 在我将表单发布到 Controller 时为空?