Database 配置了Spring事务管理器后,db连接何时建立?

Database 配置了Spring事务管理器后,db连接何时建立?,database,spring,transactions,connection,Database,Spring,Transactions,Connection,假设在名为TaskService的类中有一个方法getAssignedTasks,该方法实际上从两个数据源dao1.getInfo()和dao2.getMoreInfo()检索信息。问题是数据库连接何时实际建立 我假设调用dao1.getInfo()时已建立到datasource1的连接,此时(dao2.getMoreInfo()尚未调用)未建立到datasource2的连接。我说得对吗?调用getAssignedTasks方法时是否会立即建立连接 spring配置如下所示 <tx:adv

假设在名为
TaskService
的类中有一个方法
getAssignedTasks
,该方法实际上从两个数据源
dao1.getInfo()
dao2.getMoreInfo()
检索信息。问题是数据库连接何时实际建立

我假设调用
dao1.getInfo()
时已建立到datasource1的连接,此时(
dao2.getMoreInfo()
尚未调用)未建立到datasource2的连接。我说得对吗?调用
getAssignedTasks
方法时是否会立即建立连接

spring配置如下所示

<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true" />

我不知道这是否是规范定义的行为(如果不是-这在不同的JTA实现中可能不同),但对于Artomikos jdbc JTA实现,似乎只有在需要时和事务开始时才进行连接

这似乎是合乎逻辑的,因为在某些方法中,可能不使用第二个(或第三个,或)数据源的连接,而从池中获取它将是无用的开销

我写了一个小测试来调查这个问题,可以在上找到。您可以通过它进行调试,以便自己进行调查