Проблема Внедрение источника данных в 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
}
}