2010-08-16 31 views
2

我正在将Spring MVC集成到我一直在努力的现有项目中。通过整合,我的意思是我使用Spring重写了这个项目,并使用了我的大部分旧代码。我已经建立了环境并开始研究它。我将这个项目称为ProjectXSpring - 使用applicationContext.xml和XXXXX-servlet.xml

我已经安装和配置我projectX创建-servlet.xml中保存的视图解析器的bean,而控制器豆类等我想成立一​​个的applicationContext.xml文件,我可以把所有在如我的DAO豆...

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

我想这些值是在applicationContext.xml中所以,在我的控制器,我可以做到以下几点。

public SomeController extends SimpleFormController{ 

    private MemberDAO memberDao; 
    private ProductDAO productDao; 

    ...getter/setter methods for memberDao; 

    ...getter/setter methods for productDao; 

并且这些值将是可用的(它们注入控制器)

我已经配置在projectX创建-servlet.xml中如以下定义的控制器。

<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文件,以便能够做什么,我上面显示,注入豆类,如ProductDao这个MemberDAO到我这是在projectX创建-servlet.xml中

我一直在使用Spring MVC为一对夫妇个月的合同,并感到舒适与如何使用它配置controlellers,但我是第一次设定对我自己,为我自己使用,所以我会很感激,如果有任何advi ce或答案对我来说有点简单。

谢谢

+0

你有什么问题吗? – 2010-08-16 16:40:27

回答

1

你不必做任何特别的事情。您可以继续将applicationcontext.xml中定义的bean注入到xx-servlet.xml中定义的bean中,就好像它们都在同一个文件中声明一样。请记住使用属性ref而不是ref-local如下。

<bean id="mycontroller" class="x.y.z.CustomerController> 
    <property name="service" ref="myservice"/><!--myservice defined in applicationcontext--> 
</bean> 
1

除非我误解,你要寻找的解决方案是在你的applicationContext.xml使用import语句。这有效地将两个XML文件合并到一个上下文中,允许您在任何一个中引用bean。

例:

<import resource="classpath:foo/bar/ProjectX-servlet.xml" /> 

您可能会或可能不希望使用 “类路径”。有关更多详细信息,请参阅section 3.2.2.1 in the Spring docs

2

按照惯例,你给你的DispatcherServlet实例的名称将与{name}-servlet.xml有关。如您所述,此上下文将成为applicationContext.xml的子项,这意味着它可以访问applicationContext.xml中的beans。

尝试在你的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> 
相关问题