代码之家  ›  专栏  ›  技术社区  ›  TheJediCowboy

Spring-使用applicationContext.xml和xxxxx-servlet.xml

  •  2
  • TheJediCowboy  · 技术社区  · 14 年前

    我正在将SpringMVC集成到一个我一直在研究的现有项目中。通过集成,我的意思是我正在使用Spring重写项目,并使用我的大部分旧代码。我已经设置了环境,并开始对它进行工作。我将把这个项目称为 项目X .

    我已经设置并配置了我的 项目x-servlet.xml 它包含视图解析器bean和控制器bean等。我想设置一个 应用程序上下文.xml 我可以把所有的刀豆放进去的文件,比如…

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

    我希望这些值在 应用程序上下文.xml 所以在我的控制器里,我可以做以下的事情。

    public SomeController extends SimpleFormController{
    
       private MemberDAO memberDao;
       private ProductDAO productDao;
    
       ...getter/setter methods for memberDao;
    
       ...getter/setter methods for productDao;
    

    这些值将可用(注入控制器中)

    我已在中配置了控制器 项目x-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文件之后,我需要做什么,才能完成上面显示的操作并注入be an,例如 产品刀 成员刀 在我的控制器中配置 项目x-servlet.xml

    我已经为一个合同使用了几个月的SpringMVC,并且对如何使用它感到满意,但是我还是一个新手,我自己配置它,供自己使用,所以如果有任何建议或答案对我来说更容易解释,我将不胜感激。

    谢谢你

    3 回复  |  直到 14 年前
        1
  •  1
  •   chedine    14 年前

    你不必做任何特别的事。您可以继续将applicationContext.xml中定义的bean注入到xx-servlet.xml中定义的bean中,就像所有bean都声明在同一个文件中一样。请记住使用属性 裁判 而不是 地方裁判 如下所示。

    <bean id="mycontroller" class="x.y.z.CustomerController>
       <property name="service" ref="myservice"/><!--myservice defined in applicationcontext-->
    </bean>
    
        2
  •  2
  •   earldouglas    14 年前

    按照惯例,你给你的实例起的名字 DispatcherServlet 将与 {name}-servlet.xml . 此上下文将是 applicationContext.xml 正如您所描述的,这意味着它可以访问 应用程序上下文.xml .

    在您的 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>
    
        3
  •  1
  •   RonU xtoddx    14 年前

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

    前任:

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

    您可能希望或可能不希望使用“classpath”。请参见 section 3.2.2.1 in the Spring docs 了解更多详细信息。