简体   繁体   中英

Add all my beans in spring servlet.xml

I ma spring beginer, and i would like to add all my beans in my servlet.xml beacause only one controller is listening.

I have this in my spring-servlet.xml

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

 <annotation-driven />

 <resources mapping="/resources/**" location="/resources/" />

 <beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <beans:property name="url"
   value="jdbc:mysql://localhost:3306/CountryData" />
  <beans:property name="username" value="XXX" />
  <beans:property name="password" value="XXX" />
 </beans:bean>

 <!-- Hibernate 4 SessionFactory Bean definition -->
 <beans:bean id="hibernate4AnnotatedSessionFactory"
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <beans:property name="dataSource" ref="dataSource" />
  <beans:property name="annotatedClasses">
   <beans:list>
    <beans:value>shadows.bean.Country</beans:value>
   </beans:list>
  </beans:property>
  <beans:property name="hibernateProperties">
   <beans:props>
    <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
    </beans:prop>
    <beans:prop key="hibernate.show_sql">true</beans:prop>
   </beans:props>
  </beans:property>
 </beans:bean>

 <context:component-scan base-package="shadows" />

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

 <beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" />
 </beans:bean>


</beans:beans>

First feel, I put :

[...]
<beans:list>
        <beans:value>shadows.bean.Country</beans:value>
        <beans:value>shadows.bean.Provider</beans:value>
</beans:list>
[...]

But I have this issue :

Failed to convert property value of type 'java.util.ArrayList' to required type 'java.lang.Class[]' for property 'annotatedClasses'; nested exception is java.lang.IllegalArgumentException: Cannot find class [shadows.bean.Provider]

My Class is well placed in my shadows.bean, I just think I don't have to declared my beans like that....

EDIT :

if I replace :

[...]
<beans:list>
        <beans:value>shadows.bean.Country</beans:value>
        <beans:value>shadows.bean.Provider</beans:value>
</beans:list>
[...]

by

[...] <annotation-driven />
       <property name="packagesToScan" value="shadows.bean" />

     <resources mapping="/resources/**" location="/resources/" />

[...]

When I launch my Tomcat7, I have many issues like:

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'property"

Try using this configuration:

   <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="ws.crossnet.apn.persistencia.entities" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
            </props>
        </property>
    </bean>

Regards,

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM