gpt4 book ai didi

grails - 在 Grails 中注入(inject) grails-app 类

转载 作者:行者123 更新时间:2023-12-02 15:00:09 26 4
gpt4 key购买 nike

请注意:虽然我手头的具体问题涉及 Grails Shiro插件,我相信这是 Grails 的核心问题。因此,任何厌战 Grails 的老手都应该能够回答这个问题,无论他们是否有使用 Grails Shiro 的经验。

使用 Grails Shiro 插件(通过 grails shiro-quick-start )产生 Shiro realm class 下grails 应用程序/领域 .例如,运行:

grails shiro-quick-start --prefix=com.example.me.myapp.Mongo

...将产生:
myapp/
grails-app/
realms/
com/
me/
myapp/
MongoDbRealm.groovy

在哪里 MongoDbRealm是士郎境界。
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非常复杂,需要注入(inject)很多复杂的对象,例如服务客户端和工厂等。 如何正确注入(inject) MongoDbRealm ?

@PostConstruct在这里工作?我可以像使用 Controller 一样将 Grails 服务注入(inject)其中吗?还有什么?

同样,我想依赖注入(inject)在这里(使用 Grails Shiro 和我的 MongoDbRealm )与在 grails-app 下定义的任何其他类中的工作方式相同。 .我只是不明白 grails-app/*依赖注入(inject)有效。

最佳答案

支持在 grails-app 下定义类的插件通常通过定义一种新的工件类型来做到这一点,并指定 ArtefactHandler实现来管理它。 chalice ArtefactHandlerAdapter类实现了该接口(interface)并提供了许多通用功能,因此经常使用,并且在插件的RealmArtefactHandler class中使用.

依赖注入(inject)将在 newInstance 中配置。方法。你可以看到我在哪里为我的一个插件做了这个 here .由于 Shiro 插件没有覆盖基类中的该方法,因此看起来不支持依赖注入(inject)。

请注意,使用 @PostConstruct (或实现 InitializingBean )如果领域类注册为 Spring bean 将起作用,但在此插件中看起来并非如此。

我尽量避免使用 Holders类,因为在大多数情况下,直接使用 DI 而不是显式引入依赖项,但看起来您需要在此处使用该方法,例如fizzClient = Holders.applicationContext.fizzClient (假设它被注册为“fizzClient”bean)。

关于grails - 在 Grails 中注入(inject) grails-app 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com