2016-09-22 132 views
1

我有一個控制器,我自動裝配庫:爲什麼自動裝配彈簧儲存庫不起作用?

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

    @Autowired 
    private AccountRepository accountRepo; 

//methods 

} 

我的倉庫擴展CrudRepository

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

    Account findOne(int primaryKey); 
} 

我使用XML來配置我的項目。這裏是:

<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> 

爲什麼它不起作用?我收到的錯誤是AccountController無法自動調用Bean AccountRepository。

編輯 我已經將我的配置重構爲基於註釋的,並且一切正常。在我的XML版本中,我可能沒有掃描一些類,並導致錯誤。

+1

共享完整的堆棧跟蹤 – sidgate

+0

是由組件掃描設置覆蓋的存儲庫軟件包? – guchuan

回答

2

可能是你需要有@EnableJpaRepositories註釋上的配置類@Configuration註釋,而不是控制器類。

此外,請確保您的配置類在掃描的軟件包下。

+1

並在這裏提示:-)在春季項目中不再需要XML(最後!)。我最近做了一個100%免費的XML。甚至web.xml文件也不再需要,而且這是在WebSphere服務器上。 – drekka