2011-02-15 53 views
6

我正在首次創建Spring MVC應用程序。Spring 3 MVC調度程序xml和applicationContext xml

看來,當我啓動服務器時,即使在運行任何mvc控制器之前,applicationContext.xml也會首次加載;這就是我要的。

但是,一旦我運行一個加載了上下文的控制器:在dispatcher.xml中進行組件掃描.... IT SEEMS再次加載applicationContext.xml ... 這是怎麼回事?禁用這個?我只想讓我的applicationContext.xml運行一次。

緊接着我運行一個控制器,我看到下面的日誌...

ClassPathXmlA I org.springframework.context.support.AbstractApplicationContext prepareRefresh Refreshing org[email protected]65cb65cb: startup date [Tue Feb 15 16:29:21 EST 2011]; root of context hierarchy 
XmlBeanDefini I org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions Loading XML bean definitions from class path resource [WEB-INF/applicationContext.xml] 

我想這也是導致要創建我的兩倍JMS使用DefaultMessageListenerContainer ...

感謝

xxxdispatcher-servlet.xml

<context:component-scan base-package="com.something.web" /> 
<mvc:annotation-driven /> 

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<mvc:interceptors> 
<bean class="com.something.SomeInterceptor" /> 
</mvc:interceptors> 

<mvc:resources mapping="/js/**" location="/js/" /> 

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 
    <property name="exceptionMappings"> 
    <props> 
     <prop key="java.lang.Exception">common/error</prop> 
    </props> 
    </property> 
    <property name="warnLogCategory" value="abcdefg"/> 
</bean> 

applicationContext.xml

<bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="/WEB-INF/application.properties" /> 
</bean> 

<!-- Local Data Holder --> 
<bean id="propertyHolder" class="com.common.PropertyHolder"> 
<property name="baseURL" value="${url.base}" /> 
</bean> 

<bean id="messageListener" class="com.something.SomeListener" /> 

<bean id="xxxDAO" 
    class="com.XXXDAOImpl" 
    scope="prototype"> 
    <property name="dataSource" ref="dataSourceQA" /> 
</bean> 

<bean id="xxxServiceTarget" class="com.XXXServiceImpl"> 
    <property name="xxxDAO" ref="xxxDAO"/> 
</bean> 

<bean id="xxxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
    <property name="transactionManager" ref="txManager"/> 
    <property name="target" ref="xxxServiceTarget"/> 
    <property name="transactionAttributes"> 
     <props> 
      <prop key="*">PROPAGATION_REQUIRED</prop> 
     </props> 
    </property> 
</bean> 

<!-- and this is the message listener container --> 
<bean id="jmsContainer" 
    class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
    <property name="connectionFactory" ref="xxxCF" /> 
    <property name="destination" ref="xxxInboundQueue" /> 
    <property name="messageListener" ref="messageListener" /> 
</bean> 

的web.xml

<servlet> 
    <servlet-name>xxxdispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>xxxdispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 
<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>/WEB-INF/log4j.properties</param-value> 
</context-param> 

控制器

@Controller 
    public class XXXController { 

     @Autowired 
     private IXXXService xxxService; 

     @RequestMapping("/xxx") 
     public String xxxHandler() throws Exception { 

      return "xxxView"; 
     } 
+2

如果沒有看到您的配置,我們無法回答。 – skaffman 2011-02-15 21:46:22

+0

和web.xml – Bozho 2011-02-15 22:17:12

回答

10

請從你的web.xml文件中刪除的ContextLoaderListener我beleive這就是爲什麼兩次創建您的上下文的原因。