2016-02-16 47 views
2

我在根applicationcontext中有一個bean,但dispatcherServlet似乎無法訪問該bean。 我有一種感覺,即我所瞭解的root應用程序上下文,並不是真正的根上下文。 根據我的理解,在appcontext-config.xml中定義的任何東西都在根上下文中。而servlet-config.xml中定義的任何內容都在servlet上下文中。真的嗎 ?Spring servletcontext無法在根應用程序上下文中訪問bean

有人可以在下面的配置中看到任何錯誤?

我只在下面放了一個bean作爲示例,但我確實看到在某些情況下,導入的xml中定義的bean被定義多次。

有什麼想法?

Web.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 

      /WEB-INF/appcontext-config.xml 
     </param-value> 
    </context-param> 
    <listener> 
     <listener-class> 
org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 
<servlet> 
    <servlet-name>sw</servlet-name> 
     <servlet-class> 
org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       /WEB-INF/servlet-config.xml 
      </param-value> 
     </init-param> 
</servlet> 
</web-app> 

appcontext-config.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:webflow="http://www.springframework.org/schema/webflow-config" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.3.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd"> 

<bean id="environmentPropertyConfigurer" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> 
    <constructor-arg ref="configurationEncryption"/> 
    <property name="location" value="classpath:environment.properties"/> 
</bean> 

<context:component-scan base-package="com.a.b.*"> 
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
</context:component-scan> 

<context:annotation-config/> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

<import resource="general-config.xml"/> 
</beans> 

servlet的config.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:camel="http://camel.apache.org/schema/spring" 
    xmlns:webflow="http://www.springframework.org/schema/webflow-config" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:tx="http://www.springframework.org/schema/tx" 


xsi:schemaLocation="  
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.2.xsd 
    http://camel.apache.org/schema/spring http://camel.apache.org/schema 
    /spring/camel-spring-2.4.0.xsd 
    http://www.springframework.org/schema/webflow-config 
    http://www.springframework.org/schema/webflow-config/ 
    spring-webflow-config-2.3.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd"> 
<mvc:annotation-driven content-negotiation 
manager="contentNegotiationManager"> 
    <mvc:message-converters> 
    <bean 
     class="org.springframework.http. 
     converter.json.MappingJackson2HttpMessageConverter"> 
     <property name="objectMapper"> 
    <bean 
class="com.a.b.service.dataaccess.HibernateAwareObjectMapper" /> 
</property> 
</bean> 
</mvc:message-converters> 
</mvc:annotation-driven> 
<bean id="contentNegotiationManager" 
class="org.springframework.web.accept. 
ContentNegotiationManagerFactoryBean"> 
    <property name="favorPathExtension" value="false" /> 
</bean> 
<context:component-scan base-package="com.a.b.*" 
use-default-filters="false"> 
<context:include-filter type="annotation" 
expression="org.springframework.stereotype.Controller"/> 
</context:component-scan> 
<context:annotation-config/> 
<import resource="servlet-general-config.xml"/> 
</beans> 

回答

0

貌似豆參考configurationEncryption不在general-config.xml

另請注意:context:component-scancontext:annotation-config的工作,所以後者可以刪除。

相關問題