Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@ContextConfiguration中加载位置的顺序_Java_Spring_Configuration_Liquibase - Fatal编程技术网

Java Spring@ContextConfiguration中加载位置的顺序

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

我正在使用以下配置进行db集成测试:

@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" />