2016-02-24 16 views
6

Tôi có một dự án thực hiện truy cập dữ liệu trong một dự án và sử dụng nó trong một dự án khác như spring jar. Tôi đã tạo jar bằng cách sử dụng plugin gradle maven-publish. Tôi khởi Jar này trong trường hợp thử nghiệm dự án khác của tôi như thế nàyMùa xuân - Kho lưu trữ từ Jar khác là null. Làm thế nào để khởi tạo nó?

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

Lớp nơi Repository đang được sử dụng. Tôi đã sử dụng như thế này

public class TenantProvisioningManager { 

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

    @Autowired 
    TProductRepository tProductRepository; 
} 

Kho lưu trữ là null tại đây. Làm thế nào để khởi tạo kho từ jar khác trong dự án riêng biệt này?

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.xmlTProductRepository là trong dự án khác trong khi TenantProvisioningManager là trong dự án riêng biệt.

+0

Bạn có spring-data-jpa trên đường dẫn lớp và cấu hình mùa xuân của bạn có quét gói chứa các kho này không? Ngoài ra, thực tế là nó 'null' thay vì ném một' NoSuchBeanDefinitionException' có thể có nghĩa là 'TenantProvisioningManager' của bạn không được quản lý bởi Spring, vì vậy autowiring của bạn bị hỏng. – nbrooks

+0

Có spring-data-jpa là trên đường dẫn lớp. Làm thế nào tôi có thể xác nhận về việc quét gói? Làm thế nào tôi có thể làm cho 'TenantProvisioningManager' được quản lý bởi Spring? –

+0

Đăng nội dung của 'spring-config.xml'. Ngoài ra, những gói nào là 'TenantProvisioningManager' và' TProductRepository' trong? – manish

Trả lời

2

Đảm bảo TenantProvisioningManager của bạn cũng được quản lý vào mùa xuân. Chú thích là @Component

Các vấn đề liên quan