Grails spring bean definition

In my Grails plugin, I define the following Spring beans

def doWithSpring = {

    // define a bean of type ConfigObjectHelper
    configHelper(ConfigObjectHelper)

    // Call a method of the bean we've just defined
    String appName = configHelper.getAsString('ftp.general.appName')

    // define another bean and pass appName to it constructor
    pkApplication(Application, appName)
}

When I call configHelper.getAsString, I get a NullPointerException because it configHelperdoes not refer to the bean that I created in the previous line. Instead, Grails looks for a property / field of the current class with this name. Since none of them exist, I get a NullPointerException.

Is there a way to get a link to Spring bean within closure doWithSpring?

thank

+3
source share
1 answer

InvokingFactoryBean method to the rescue!

def doWithSpring = {

    // define a bean of type ConfigObjectHelper
    configHelper(ConfigObjectHelper)    

    appName(org.springframework.beans.factory.config.MethodInvokingFactoryBean) {
        targetObject = ref('configHelper')
        targetMethod = 'getAsString'
        arguments = ['ftp.general.appName']
    }               

    // define another bean and pass appName to it constructor
    pkApplication(Application, appName)
}
+4
source

Source: https://habr.com/ru/post/1792800/


All Articles