spring – Grails – 覆盖resources.groovy中的bean属性值

在Grails i18n插件defined thusly中定义了一个messageSource bean:

messageSource(PluginAwareResourceBundleMessageSource) {
  basenames = baseNames.toArray()
  fallbackToSystemLocale = false
  pluginManager = manager
  ....
}

是否可以覆盖我的resources.groovy中的fallbackToSystemLocale值的配置,例如:

messageSource {
    fallbackToSystemLocale = true
} 

以上不起作用,我得到一个错误:“创建名为’messageSource’的bean时出错:Bean定义是抽象的”

解决方法:

有没有理由不在BootStrap.groovy中简单地更新bean?

class BootStrap {
    def def messageSource
    def init = { servletContext ->
        messageSource.fallbackToSystemLocale = true
    }
}

如果要在运行BootStrap之前修改bean,可以像this blog post一样使用BeanPostProcessor.

SRC /常规/ yourpkg / CustomBeanPostProcessor:

import org.springframework.beans.factory.config.BeanPostProcessor

class CustomBeanPostProcessor implements BeanPostProcessor{

    @Override
    Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean
    }

    @Override
    Object postProcessAfterInitialization(Object bean, String beanName) {
        if(beanName == 'messageSource') {
            bean.setFallbackToSystemLocale = true
        }
        return bean
    }
}

resources.groovy:

beans = {
    customBeanPostProcessor(CustomBeanPostProcessor)
}

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...