首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注入Grails -Grails中的app类

注入Grails -Grails中的app类
EN

Stack Overflow用户
提问于 2015-10-23 12:31:30
回答 1查看 148关注 0票数 0

请注意:,虽然我手头的具体问题涉及Grails Shiro插件,但我认为这是一个核心的Grails问题。因此,任何厌倦战斗的Grails老兵都应该能够回答这个问题,不管他们在Grails的经历如何。

使用Grails插件(通过grails shiro-quick-start)在grails-app/realms.下生成一个Shiro领域类例如,运行:

代码语言:javascript
复制
grails shiro-quick-start --prefix=com.example.me.myapp.Mongo

...will生产:

代码语言:javascript
复制
myapp/
    grails-app/
        realms/
            com/
                me/
                    myapp/
                        MongoDbRealm.groovy

其中MongoDbRealm是Shiro领域。

代码语言:javascript
复制
package com.example.me.myapp

class MongoDbRealm {
    FizzClient fizzClient // How to inject?
    BuzzClient buzzClient // How to inject?
    FooFactory fooFactory // How to inject?

    // lots of auth-centric, generated code here...
}

让我们假设MongoDbRealm非常复杂,需要注入许多复杂的对象,如服务客户端和工厂等。如何正确地注入

@PostConstruct在这里工作吗?我能像对控制器那样将Grails服务注入其中吗?还有别的吗?

同样,我可以想象这里的依赖注入与在MongoDbRealm下定义的任何其他类一样工作(对于Grails和我的grails-app )。我只是不明白grails-app/*依赖注入是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-23 13:12:14

支持在grails-app下定义类的插件通常通过定义一种新类型的工件来实现,并指定一个ArtefactHandler实现来管理它。Grails ArtefactHandlerAdapter类实现了这个接口,并提供了许多公共功能,因此经常使用它,并在插件的RealmArtefactHandler类中使用。

依赖项注入将在newInstance方法中配置。你可以看到我在哪里为我的插件这里这么做。由于Shiro插件不覆盖基类中的该方法,因此似乎不支持依赖项注入。

请注意,如果领域类注册为Spring,则使用@PostConstruct (或实现InitializingBean)可以工作,但在这个插件中,情况并非如此。

我试图避免使用Holders类,因为在大多数情况下,使用DI而不是显式地提取依赖项是很简单的,但是这里似乎需要使用这种方法,例如fizzClient = Holders.applicationContext.fizzClient (假设注册为"fizzClient“bean)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33302416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档