2016-09-22 1 views
1

Ich habe einen Controller, wo ich Repository autowire:Warum Auto-Spring-Repositories nicht funktioniert?

@Controller 
@RequestMapping("/account") 
@EnableJpaRepositories 
public class AccountController { 

    @Autowired 
    private AccountRepository accountRepo; 

//methods 

} 

Mein Repository CrudRepository

@Repository 
public interface AccountRepository extends CrudRepository<Account, Integer> { 

    Account findOne(int primaryKey); 
} 

erweitert ich xml verwenden mein Projekt zu konfigurieren. Hier ist es:

<jpa:repositories base-package="com.library.repositories" 
     entity-manager-factory-ref="entityManager"></jpa:repositories> 

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

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManager" /> 
    </bean> 

    <bean id="entityManager" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="com.library.entities" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
     </property> 
     <property name="jpaProperties"> 
      <props> 
       <!-- <prop key="hibernate.hbm2ddl.auto">create-drop</prop> --> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/library" /> 
     <property name="username" value="root" /> 
     <property name="password" value="root" /> 
    </bean> 

Warum es nicht funktioniert? Der Fehler, den ich erhalte, ist, dass AccountController das Bean AccountRepository nicht automatisch aufruft.

BEARBEITEN Ich habe meine Konfiguration auf Annotation basierend refactored und alles funktioniert. In meiner XML-Version habe ich wahrscheinlich einige Klassen nicht gescannt und es ist ein Fehler aufgetreten.

+1

share complete stack trace – sidgate

+0

ist das Repository-Paket, das durch Ihre Komponenten-Scan-Einstellung abgedeckt wird? – guchuan

Antwort

2

Mai werden Sie @EnableJpaRepositories Anmerkung auf eine Konfigurationsklasse mit @Configuration Anmerkung statt Controller-Klasse haben müssen.

Stellen Sie außerdem sicher, dass sich Ihre Konfigurationsklassen in einem gescannten Paket befinden.

+1

Und hier reinspielen :-) XML wird nirgends in einem Frühjahrsprojekt mehr benötigt (Endlich!). Ich habe kürzlich einen gemacht, der zu 100% XML-frei war. Selbst die Datei web.xml wird nicht mehr benötigt und dies war auf einem WebSphere-Server. – drekka