这是关于注入数据服务的 Grails 服务。问题是注入的服务在运行时为空。这是一个例子。
class MessagingService {
def sendEmail(String message) {
...
}
}
interface IFlowService {
...
}
@Service(Flow)
abstract class FlowService implements IFlowService {
MessagingService messagingService
void sendFoo() {
messagingService.sendEmail(message)
}
}
FlowService
并且MessagingService
都位于grails-app/services
.
FlowService
调用时sendEmail
有一个 NPE,因为messagingService
为空。
MessagingService
是手写的,与域无关。
本项目使用 Grails 4.0.10,问题出现多次。当通常的 Gails 魔法(即注射)不起作用时,我用 kludges 解决了前一两个问题,你知道,只是为了避免卡住。
现在在我看来,这个问题是可以预见的,每次我编写与域无关的服务时都会发生这种情况。我错过了文档中的某些内容吗?处理此问题的适当方法是什么?
Kludge:为了解决这个问题,我sayHi
在有问题的服务中包含了一个方法。它只记录一条调试消息。sayHi
我从BootStrap调用以检查它是否有效。确实如此,令人惊讶。然后我在BootStrap中添加代码以将服务分配给服务中所谓的注入属性。[不寒而栗]