Java Spring@ContextConfiguration中加载位置的顺序
我正在使用以下配置进行db集成测试:Java Spring@ContextConfiguration中加载位置的顺序,java,spring,configuration,liquibase,Java,Spring,Configuration,Liquibase,我正在使用以下配置进行db集成测试: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:spring/spring-master.xml"}) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) @Transactional() publi
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional()
public class EmployeeAccessPropertyTest {
spring master.xml按以下顺序加载spring配置文件:
<import resource="classpath:spring/db/dev-datasource-config.xml"/>
<import resource="classpath:spring/db/jpa-config.xml"/>
<import resource="classpath:spring/db/transaction-config.xml"/>
<import resource="classpath:spring/db/component-config.xml"/>
在初始化entityManagerFactory时(在jpa config.xml文件中),似乎并没有创建表。好的,我首先通过liquibase maven插件生成scheme:
mvn initialize liquibase:update
通过Spring上下文注释以下db方案生成:
<!--<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">-->
<!--<property name="dataSource" ref="dataSource" />-->
<!--<property name="changeLog" value="classpath:db/changelog/db.changelog-master.xml" />-->
<!--<property name="dropFirst" value="true" />-->
<!--</bean>-->
问题已经解决了。如何确保Spring首先加载dev-datasource-config.xml,初始化liquibase bean,然后才加载jpa-config.xml,如下所示:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"/>
使用“依赖于”属性,如spring手册中所述: 例如
<!--<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">-->
<!--<property name="dataSource" ref="dataSource" />-->
<!--<property name="changeLog" value="classpath:db/changelog/db.changelog-master.xml" />-->
<!--<property name="dropFirst" value="true" />-->
<!--</bean>-->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"/>
<bean id="beanOne" class="ExampleBean" depends-on="manager"/>
<bean id="manager" class="ManagerBean" />