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.
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
Sì spring-data-jpa è sul percorso della classe. Come posso confermare sulla scansione del pacchetto? Come posso rendere 'TenantProvisioningManager' gestito da Spring? –
Pubblica il contenuto di 'spring-config.xml'. Inoltre, quali pacchetti sono 'TenantProvisioningManager' e' TProductRepository' in? – manish