Проблема Внедрение источника данных в Grails Service

Я сталкиваюсь с проблемой при попытке сделать следующее в моей Serivce:

class SendingMailService {

def dataSource // the Spring-Bean "dataSource" is auto-injected

def sendXLSMail() {

def db = new Sql(dataSource) 

//additional code such as query, execution follows

}
}

Когда я выполняю этот код, я получаю сообщение об ошибке: "Необходимо указать ненулевое соединение". Из того, что я прочитал, я считаю, что приведенный выше код должен работать (это не модульный тест)... так ясно, что я что-то упустил в отношении Grails Services?

Спасибо за любую помощь здесь,

1 ответ

Решение

Хорошо, спустя месяцы у меня было время заняться этим.

Я попытался сделать несколько вещей, чтобы dataSource автоматически внедрился в сервис, но у меня все равно получалось нулевое соединение. В конечном итоге я получил передачу источника данных от контроллера, который не очень элегантен, но, по крайней мере, работает. Я надеюсь, что это поможет кому-то еще, поскольку я видел некоторые подобные проблемы там. Все еще хотел бы знать, почему автоинжекция не работает, но я думаю, что я должен был бы копнуть глубже в Grails, чтобы понять это.

class MyController {

def dataSource

def someControllerMethod() {

MyService myService = new MyService()
myService.serviceMethodQuery(dataSource) 

}
}

//////////////////////

class MyService {

def serviceMethodQuery(Object dataSource){

//use your datasource as you normally would
}

}
Другие вопросы по тегам