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

tho*_*nic 4 grails groovy spring

这里messageSource定义了Grails i18n插件中定义的bean :

messageSource(PluginAwareResourceBundleMessageSource) {
  basenames = baseNames.toArray()
  fallbackToSystemLocale = false
  pluginManager = manager
  ....
}
Run Code Online (Sandbox Code Playgroud)

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

messageSource {
    fallbackToSystemLocale = true
} 
Run Code Online (Sandbox Code Playgroud)

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

cod*_*ark 6

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

class BootStrap {
    def def messageSource
    def init = { servletContext ->
        messageSource.fallbackToSystemLocale = true
    }
}
Run Code Online (Sandbox Code Playgroud)

如果要在运行BootStrap之前修改bean,可以BeanPostProcessor此博客文章中使用as .

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
    }
}
Run Code Online (Sandbox Code Playgroud)

resources.groovy:

beans = {
    customBeanPostProcessor(CustomBeanPostProcessor)
}
Run Code Online (Sandbox Code Playgroud)