Как добавить сервисы в команду Grails 3?

Как в приложении Grails 3 создать команду CLI, которая использует классы приложения и службы домена?

Следующее не сработало:

  1. grails create-app test-grails3-angular-cmd --profile=angular
  2. cd server
  3. grails create-command MyExample
  4. Реализуйте MyExample:

    package test.grails3.angular.cmd
    
    import grails.dev.commands.*
    
    class MyExampleCommand implements GrailsApplicationCommand {
        def testService
    
        boolean handle() {
            testService.test()
            return true
        }
    }
    
  5. grails create-service TestService

  6. Реализуем TestService:

    package test.grails3.angular.cmd
    
    import grails.transaction.Transactional
    
    @Transactional
    class TestService {
    
        def test() {
            System.out.println("Hello, test service!")
        }
    }
    
    1. 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
    }
}
Другие вопросы по тегам