在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
命令执行错误:无法在null对象上调用方法test()
我该如何解决这个问题?
我使用的是grails 3.3.0.M2。
答案 0 :(得分:1)
MyExampleCommand
不是一个可以注入服务的bean。但是,applicationContext
中可以使用GrailsApplicationCommand
(扩展ApplicationCommand
特征),可以直接利用它来获取服务bean。
class MyExampleCommand implements GrailsApplicationCommand {
boolean handle() {
TestService testService = applicationContext.getBean(TestService)
testService.test()
return true
}
}