Grails - Bootstrap - 空指针而不是服务

akn*_*akn 2 grails

我想在我的应用程序中使用init的数据生成器.它在使用.save()方法创建对象时工作正常,但是当我想使用专用服务时它不起作用,因为空指针而不是注入服务.那是我的代码:

我在conf/spring中定义了DataGenerator bean

beans = {
    dataGenerator(DataGenerator)
}
Run Code Online (Sandbox Code Playgroud)

Bootstrap.groovy看起来像:

class BootStrap {
  def dataGenerator
  def init = { servletContext ->
    dataGenerator.generateData()
  }
}
Run Code Online (Sandbox Code Playgroud)

在`DataGenerator'中我有:

class DataGenerator{
    BookService bookService

    def generateData() {
        log.info("Generating books")
        createBooks()
    }

    def createBooks(){
        (1..40).each() {
            CreateBookCommand command = new CreateBookCommand()
            /* some command populate code*/
            bookService.create(command);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不能调用create()方法,因为bookService总是如此null

BookService是简单的grails服务,有一些依赖,当然放在 grails-app/services

class BookService {    
    UserService userService
    SpringSecurityService springSecurityService

    def create(CreateBookCommand command){
        Book book = new Book()
        command.bindTo(book)
        book.save(flush:true, failOnError:true)
    }
    /*some other methods*/

}
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么解决吗?

Sud*_*r N 5

在resources.groovy中试试这个

beans = {
 dataGenerator(DataGenerator) { bean ->
   bean.autowire = 'byName'
  }
}
Run Code Online (Sandbox Code Playgroud)