2017-07-18 2 views
0

ich folgende Fehlermeldung weiterhin erhalten:Unable Frühjahr Repository Bohnen autowire

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type 'StorageItemRepository' 

Mein beans.xml gesetzt ist alles zu finden - in META-INF/beans.xml jede Modul Ressourcendatei. Meine Repository-Klasse hat @Repository und meine web.xml ist definitiv konfiguriert, um die Bean zu finden.

Es ist erwähnenswert - das funktioniert, wenn entfaltet - nur nicht für den untenstehenden Komponententest.

My Unit-Test:

/** 
* Test for {@link StorageItemRepository} 
*/ 
@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({"classpath:JDBCConfig.xml"}) 
@EnableTransactionManagement 
@EnableJpaRepositories(basePackages = {"com.app.storage.persistence.repository"}) 
public class StorageItemRepositoryTest { 

/** {@link StorageItemRepository} */ 
@Autowired 
private StorageItemRepository storageItemRepository; 

/** 
* Finds all storage items in db. 
*/ 
@Test 
public void checkFindAllItems(){ 

    final StorageItemPersistenceModel storageItemPersistenceModel = new StorageItemPersistenceModel(); 
    storageItemPersistenceModel.setId(1L); 
    storageItemPersistenceModel.setDateStored(new DateTime()); 
    storageItemPersistenceModel.setName("Name"); 
    storageItemRepository.save(storageItemPersistenceModel); 
} 
} 

JDBCConfig Datei:

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

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

<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="packagesToScan" value="com.app.storage.persistence.model" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <property name="persistenceUnitName" value="app_test"/> 
    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="true"/> 
    <property name="generateDdl" value="true"/> 
    <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/> 
</bean> 

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

</beans> 

Die persistence.xml auf jeden Fall in Ordnung ist und die Arbeit, die Ursache so nicht.

+1

Sind verwenden Sie Spring Boot? Ich glaube, dass '@ EnableJpaRepositories' andere Spring Boot-Konfigurationsmöglichkeiten deaktiviert ... Konnten Sie versuchen, META-INF/beans.xml auch in der Einheit' @ ContextConfiguration' zu laden? – gtosto

+0

Immer noch das gleiche Problem .. –

+0

In meinem Fall habe ich den Test mit '@ TransactionConfiguration' zusammen mit' @ContextConfiguration() '&' @RunWith (SpringJUnit4ClassRunner.class) 'notiert, ohne' @ EnableTransactionManagement' & '@ EnableJpaRepositories', und es funktioniert gut. –

Antwort

0

Wie läuft der Komponententest?

Da es funktioniert, wenn sie entfaltet, und nicht in der Unit-Test, ich bin zu der Annahme geneigt, dass das Gerät die Testdurchführung eine fehlende Classpath hat, wie JDBCConfig.xml existiert nicht in der Ausführung Classpath

+0

Leider ist dies nicht der Fall - es lädt die Konfiguration korrekt. –

Verwandte Themen