2016-07-07 103 views
1

我在mvc-dispatcher-servlet.xml中使用spring配置文件。但是,得到錯誤:XML中彈簧配置文件的錯誤

cvc-complex-type.2.4.a: Invalid content was found starting with element 'bean'. One of '{"http://www.springframework.org/schema/beans":beans}' is expected. 

我不是在配置文件添加其他豆類,因爲我想這些在兩個配置文件中。需要幫助解決錯誤。 下面是我的XML和誤差在線 - 豆ID來= 「transactionManager的」 類= 「org.springframework.orm.hibernate5.HibernateTransactionManager」>

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- Specifying base package of the Components like Controller, Service, 
     DAO --> 
    <context:component-scan base-package="com.mycompany.saas.*" /> 

    <!-- Getting Database properties --> 
    <context:property-placeholder location="classpath:db.properties" /> 
    <!-- Getting Configuration properties --> 
    <!-- <context:property-placeholder location="classpath:config.properties" 
     /> --> 

    <mvc:annotation-driven /> 
    <beans profile="default"> 
     <!-- DataSource --> 
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
      destroy-method="close"> 
      <property name="driverClass" value="${database.driverClass}" /> 
      <property name="jdbcUrl" value="${database.url}" /> 
      <property name="user" value="${database.username}" /> 
      <property name="password" value="${database.password}" /> 
      <property name="acquireIncrement" value="${connection.acquireIncrement}" /> 
      <property name="minPoolSize" value="${connection.minPoolSize}" /> 
      <property name="maxPoolSize" value="${connection.maxPoolSize}" /> 
      <property name="maxIdleTime" value="${connection.maxIdleTime}" /> 
     </bean> 

     <!-- Hibernate SessionFactory --> 
     <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource"></property> 
      <property name="hibernateProperties"> 
       <props> 
        <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
        <!-- <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> --> 
        <prop key="hibernate.default_schema">${hibernate.default_schema}</prop> 
        <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
        <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
        <prop key="hibernate.connection.shutdown">true</prop> 

       </props> 
      </property> 
      <property name="packagesToScan" value="com.mycompany.saas.model"></property> 
     </bean> 
    </beans> 

    <beans profile="test"> 
     <!-- DataSource --> 
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
      destroy-method="close"> 
      <property name="driverClass" value="${database.driverClass}" /> 
      <property name="jdbcUrl" value="${database.url}" /> 
      <property name="user" value="${database.username}" /> 
      <!-- <property name="password" value="${database.password}" /> --> 
      <property name="acquireIncrement" value="${connection.acquireIncrement}" /> 
      <property name="minPoolSize" value="${connection.minPoolSize}" /> 
      <property name="maxPoolSize" value="${connection.maxPoolSize}" /> 
      <property name="maxIdleTime" value="${connection.maxIdleTime}" /> 
     </bean> 
     <!-- Hibernate SessionFactory --> 
     <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource"></property> 
      <property name="hibernateProperties"> 
       <props> 
        <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
        <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
        <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
        <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
        <prop key="hibernate.connection.shutdown">true</prop> 

       </props> 
      </property> 
      <property name="packagesToScan" value="com.mycompany.saas.model"></property> 
     </bean> 
    </beans> 

    <!-- Transaction --> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

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

    <bean id="applicationContextProvder" class="com.mycompany.saas.util.ApplicationContextProvider" /> 
    <bean id="mcSaasUserDAO" class="com.mycompany.saas.dao.mcSaasUserDAOImpl"></bean> 
    <bean id="mcUserService" class="com.mycompany.saas.service.mcUserServiceImpl"></bean> 
    <bean id="emailContentGenerator" class="com.mycompany.saas.notifier.mcEmailContentGenerator"> 
     <constructor-arg value="classpath:/mail.html" /> 
    </bean> 



</beans> 
+0

該消息是否包含行/列號? (如果適用的話,總是包括ENTIRE消息和堆棧跟蹤)。如果您有行/列號,請指出它在XML中的位置。 –

+0

它的行 user3396729

+0

@JimGarrison問題更新 – user3396729

回答

2

閱讀XSD文件它看來第一級<bean>...</bean>元素(即transactionManager和下面的bean)必須在嵌套的<beans profile="xxx">...</beans>元素之前出現。

下面是來自XSD片段

<xsd:element name="beans"><xsd:annotation><xsd:documentation> 
    ... 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element ref="description" minOccurs="0"/> 
      <xsd:choice minOccurs="0" maxOccurs="unbounded"> 
       <xsd:element ref="import"/> 
       <xsd:element ref="alias"/> 
       <xsd:element ref="bean"/> 
       <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/> 
      </xsd:choice> 
      <xsd:element ref="beans" minOccurs="0" maxOccurs="unbounded"/> 
     </xsd:sequence> 
     ... 

這是說一個beans元件必須是包含的序列的description(別處所定義),接着是零個或更多個元件可以是任何的importaliasbean (也在其他地方以任何順序定義),隨後是零個或多個beans元素(遞歸定義)。

+0

是的,它的工作。所以這是由於訂購。普通豆必須放在最上面? – user3396729

+0

是的,但這與「公共bean」無關。它是如何定義XSD架構的。 –