2016-02-24 5 views
6

Ho un progetto che consente l'accesso ai dati in un progetto e utilizzarlo in un altro progetto come jar spring. Ho creato jar usando il plugin gradle maven-publish. Ho inizializzato questo vaso nel mio altro caso di test progetto come questoSpring - Il repository di un altro Jar è nullo. Come inizializzarlo?

@ContextConfiguration(locations = {"classpath*:spring-config.xml"}) 
@Transactional 
public class TenantProvisioningManagerTest extends AbstractTestNGSpringContextTests {} 

classe dove Repository viene utilizzato. Ho usato come questo

public class TenantProvisioningManager { 

    private static final Logger logger = LogManager.getLogger(TenantProvisioningManager.class); 

    @Autowired 
    TProductRepository tProductRepository; 
} 

repository è null qui. Come inizializzare il repository da un altro jar in questo progetto separato?

spring-config.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<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:context="http://www.springframework.org/schema/context" 
     xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
     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/context 
       http://www.springframework.org/schema/context/spring-context.xsd 
       http://www.springframework.org/schema/data/jpa 
       http://www.springframework.org/schema/data/jpa/spring-jpa.xsd 
       "> 
<context:property-placeholder 
     location="file://#{systemEnvironment['GRADLE_USER_HOME']}/gradle.properties"/> 
<!-- the base package for spring data jpa repository interfaces --> 
<jpa:repositories base-package="com.asklytics.dao.repos" /> 

<!-- Enable the component scan (auto wiring etc) for the following package --> 
<context:component-scan base-package="com.asklytics" /> 

<!-- Make sure the following is specified to enable transaction --> 
<tx:annotation-driven /> 
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

<!-- This defines the entity manager factory with some custom properties --> 
<bean id='entityManagerFactory' class='org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean'> 
    <property name="persistenceUnitName" value="persitanceUnit"/> 
    <property name='dataSource' ref='dataSource' /> 
</bean> 

<bean id='dataSource' class='org.springframework.jdbc.datasource.DriverManagerDataSource'> 
    <property name='driverClassName' value='com.mysql.jdbc.Driver' /> 
    <property name='url' value="${awsCamelDbUrl}" /> 
    <property name='username' value="${awsCamelDbUsername}" /> 
    <property name='password' value="${awsCamelDbPassword}" /> 
</bean> 

spring-config.xml e TProductRepository sono in un altro progetto, mentre TenantProvisioningManager è in progetto separato.

+0

Hai spring-data-jpa sul classpath e la tua configurazione di primavera esegue la scansione del pacchetto in cui sono presenti questi repository? Inoltre, il fatto che sia 'null' piuttosto che lanciare un' NoSuchBeanDefinitionException' probabilmente significa che il tuo 'TenantProvisioningManager' non viene gestito da Spring, quindi il tuo autowiring è rotto. – nbrooks

+0

Sì spring-data-jpa è sul percorso della classe. Come posso confermare sulla scansione del pacchetto? Come posso rendere 'TenantProvisioningManager' gestito da Spring? –

+0

Pubblica il contenuto di 'spring-config.xml'. Inoltre, quali pacchetti sono 'TenantProvisioningManager' e' TProductRepository' in? – manish

risposta

2

Assicurati che il tuo TenantProvisioningManager sia gestito anche dalla primavera. Annota come @Component

Problemi correlati