我正在将 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)诸如 ProductDAO 和 MemberDAO 到我的 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/