在我的Spring应用程序上下文中,我有DynamicSessionFactoryInitBean
,它总是在应用程序上下文中需要,因为它负责数据源的动态bean定义和hibernate会话工厂中所有注册的数据库(相同的模式,多个数据库)系统。还有另一个bean LiquibaseInitBean
仅在配置文件开发处于活动状态时才会出现,并负责对系统中注册的每个数据库应用Liquibase数据库升级。
让DynamicSessionFactoryInitBean
依赖LiquibaseInitBean
(每当存在,意味着开发资料处于活动状态时),以便DynamicSessionFactoryInitBean
始终可以看到<beans>
<!-- other beans.... -->
<bean id="dynamicSessionFactoryInitBean" class="my.app.DynamicSessionFactoryInitBean" />
<beans profile="development">
<bean id="liquibaseInitBean" class="my.app.liquibase.LiquibaseInitBean" />
</beans>
<beans>
会很高兴最新的数据库架构。
depends-on="liquibaseInitBean"
在开发配置文件未激活时,简单地为DynamicSessionFactoryInitBean
定义添加{{1}}属性显然会导致问题(未定义bean命名为&#39; LiquibaseInitBean&#39;)。是否有条件取决于&#34;或者&#34;取决于是否存在&#34;在春天的类型设施?
答案 0 :(得分:1)
在两个配置文件中定义dynamicSessionFactoryInitBean的默认配置文件和开发配置文件。使dynamicSessionFactoryInitBean仅在开发配置文件中依赖于liquibaseInitBean,如下所示
<beans>
<!-- other beans.... -->
<beans profile="default">
<bean id="dynamicSessionFactoryInitBean" class="my.app.DynamicSessionFactoryInitBean" />
</beans>
<beans profile="development">
<bean id="liquibaseInitBean" class="my.app.liquibase.LiquibaseInitBean" />
<bean id="dynamicSessionFactoryInitBean" class="my.app.DynamicSessionFactoryInitBean" depends-on="liquibaseInitBean" />
</beans>
<beans>
NB。当没有激活其他配置文件时,始终激活默认配置文件