Как добавить сервисы в команду Grails 3?
Как в приложении Grails 3 создать команду CLI, которая использует классы приложения и службы домена?
Следующее не сработало:
grails create-app test-grails3-angular-cmd --profile=angular
cd server
grails create-command MyExample
Реализуйте MyExample:
package test.grails3.angular.cmd import grails.dev.commands.* class MyExampleCommand implements GrailsApplicationCommand { def testService boolean handle() { testService.test() return true } }
grails create-service TestService
Реализуем TestService:
package test.grails3.angular.cmd import grails.transaction.Transactional @Transactional class TestService { def test() { System.out.println("Hello, test service!") } }
grails run-command my-example
Ошибка выполнения команды: невозможно вызвать метод test() для нулевого объекта
Как я могу это исправить?
Я использую Grails 3.3.0.M2.
1 ответ
Решение
MyExampleCommand
Я считаю, что это не боб, где сервис может быть введен. Тем не мение, applicationContext
доступно в GrailsApplicationCommand
(продолжается ApplicationCommand
черта), которая может быть использована непосредственно для получения служебного компонента.
class MyExampleCommand implements GrailsApplicationCommand {
boolean handle() {
TestService testService = applicationContext.getBean(TestService)
testService.test()
return true
}
}