Grails插件依赖注入在域类和控制器中失败

时间:2016-02-17 15:18:08

标签: grails grails-3.0.9

| Grails版本:3.0.7

| Groovy版本:2.4.4

| JVM版本:1.8.0_51

我正在尝试安装grails插件:Slug Generator 0.5(https://grails.org/plugin/slug-generator

但是,服务依赖项注入在域类或服务中无法正常工作,并始终为空引用。

这不是我第一次遇到插件无法成功注入服务:Grails Geocode plugin dependency injection issue

基本上,我似乎无法在我的应用程序中使用某些插件,因为我不能指望服务依赖注入工作。

如果有人能提供一些见解,我会非常感激。

我遵循以下示例代码:

class Dummy {
    def slugGeneratorService

    String name
    String slug = ""

    def beforeInsert() {
        this.slug = slugGeneratorService.generateSlug(this.class, "slug", name)
    }

    def beforeUpdate() {
        if (isDirty('name')) {
            this.slug = slugGeneratorService.generateSlug(this.class, "slug", name)
        }
    }
}

以下是错误日志示例:

Caused by: java.lang.NullPointerException: Cannot invoke method generateSlug() on null object

我注意到的一件事是,在命令行中,以下内容不返回任何内容:

$ grails list-plugins | grep slug

但是,如果我搜索另一个插件,我会得到一个结果:

$ grails list-plugins | grep joda

约达时间

我可以清楚地看到(通过IntelliJ)slug生成器插件位于类路径中,我实际上可以通过外部库访问所有源代码。

也许这暗示了这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,这似乎是我愚蠢地试图在grails 3.x插件中使用grails 2.x插件。

在grails文档中详细介绍了将插件从2.x升级到3.x的各种步骤。

我的直接解决方案是简单地创建一个新服务并将插件中的代码复制到我的应用程序中。工作得很好。

Grails 3.x插件:https://bintray.com/grails/plugins Grails 2.x插件:https://grails.org/plugins/

除非您通过Grails网站导航,否则它并不明显。如果您从Google直接进入插件页面,则兼容性显示为2.5.x>

然而,这实际上似乎意味着大于2.5.x但小于3.x

希望这有助于其他人遇到此事。