Grails开发随笔系列(三)覆盖spring bean

本文介绍了在Grails应用中,如何解决falconeutil事件发布订阅插件与searchable查询插件之间的冲突问题。通过在spring配置文件中覆盖特定的BeanFactoryPostProcessor,实现了两个插件的兼容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

grails有个轻量级事件发布订阅插件叫falcone util,是很好很好的。。。

grails还有个查询插件叫searchable,也是很好很好的。。。

 

可这两个家伙碰到一起问题就来了。falcone util里把grails原来的sessionFactory给代理了,用的是spring BeanFactoryPostProcessor。而searchable插件调用的compass库使用sessionFactory时直接把他当成其实现SessionFactoryImpl来用,结果世界不清净了。。。

 

好在我用falcone util只是想把发邮件等逻辑从service中分离,并不想监听hibernate那一大堆事件,所以falcone util对sessionFactory的黑客行为对我是没有意义的,可以去掉。直接改他的源码当然可以,不过这样我就要多维护一套源码。这很不好。

其实只要把falcone util放在spring里的那个BeanFactoryPostProcessor覆盖掉就好了,falcone util源码中这样写的

 

def doWithSpring = {

 ...

  interceptableSessionFactoryPostProcessor(InterceptableSessionFactoryPostProcessor)

}

 InterceptableSessionFactoryPostProcessor就是那个干坏事的BeanFactoryPostProcessor。

 

简单了,我在我的grails项目的/grails-app/conf/spring/resources.groovy中加一句

 

interceptableSessionFactoryPostProcessor(Object)
 就把原来那个interceptableSessionFactoryPostProcessor覆盖掉了。世界清静了,偶也~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值