gpt4 book ai didi

hibernate - 确保在sessionFactory之前创建我的bean

转载 作者:行者123 更新时间:2023-12-02 15:00:35 25 4
gpt4 key购买 nike

我试图通过将bean添加到sessionFactory来定义在Hibernate 4 resources.groovy之前创建和初始化的bean

beans = {

if (Environment.current == PRODUCTION) {
flyway(Flyway) { bean ->
bean.initMethod = 'migrate'
dataSource = ref('dataSource')
locations = 'migration/db/mysql'
initOnMigrate = true
}
}
}

不,我想确保在创建 initMethod之前调用 sessionFactory而不创建单独的Grails插件。

有没有办法做到这一点,或者在执行 resources.groovy时为时已晚?我想使用 dataSource bean和 Flyway迁移数据,但是在 sessionFactory开始对数据库架构进行 validate之前初始化Flyway bean。

最佳答案

几个小时后,我找到了答案。在Burt Beckwiths的书Programming Grails中有一章称为Bean Postprocessors,这是Spring(或Grails)允许您在applicationContext最终确定之前修改现有bean定义的方式。

 beans = {

if (application.config.flyway.enabled) {

flyway(Flyway) { bean ->
bean.initMethod = 'migrate'
dataSource = ref('dataSource')
locations = application.config.flyway.locations
initOnMigrate = application.config.flyway.initOnMigrate
}

def sessionFactoryBeanDef = getBeanDefinition('sessionFactory')
if (sessionFactoryBeanDef) {
// make it depend on my bean
sessionFactoryBeanDef.dependsOn = ['flyway'] as String[]
}
}
}

关于hibernate - 确保在sessionFactory之前创建我的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com