Плагин Grails: внедрить список в bean-компонент внутри doWithSpring - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть бин со свойством List. Как уже упоминалось в документации , вы можете легко внедрить свойство List в bean-компонент с помощью bean-компонентов DSL:

def example = exampleBean(MyExampleBean) {
        someProperty = [1, 2, 3]
    }

Это работает в resources.groovy, но если вы сделаете это в закрытии doWithSpring плагина - то же самое определение компонента не будет работать.

Это ошибка Grails (я использую Grails 3.3.3)? Есть ли обходные пути, чтобы он работал в плагине?

1 Ответ

0 голосов
/ 06 ноября 2018

См. Проект на https://github.com/jeffbrown/taraskahut.

Дескриптор плагина в https://github.com/jeffbrown/taraskahut/blob/df3df67cb8a6dd24317f45aa51b6fff449b60ed1/helper/src/main/groovy/helper/HelperGrailsPlugin.groovy#L43-L48 содержит следующее:

    Closure doWithSpring() { {->
            exampleBean(MyExampleBean) {
                someProperty = [1, 2, 3, 5, 8]
            }
        }
    }

BootStrap.groovy в приложении на https://github.com/jeffbrown/taraskahut/blob/df3df67cb8a6dd24317f45aa51b6fff449b60ed1/app/grails-app/init/app/BootStrap.groovy содержит следующее:

package app

import helper.MyExampleBean

class BootStrap {

    MyExampleBean exampleBean

    def init = { servletContext ->
        log.debug "someProperty is ${exampleBean.someProperty}"
    }
    def destroy = {
    }
}

Запуск приложения показывает, что инициализация свойства работает должным образом:

$ ./gradlew app:bootRun
...
:app:processResources
:app:classes
:app:findMainClass
:app:bootRun
2018-11-06 13:19:52.983 DEBUG --- [           main] app.BootStrap
    : someProperty is [1, 2, 3, 5, 8]
Grails application running at http://localhost:8080 in environment: development
...