gpt4 book ai didi

Grails:在域类中动态注入(inject)服务

转载 作者:行者123 更新时间:2023-12-04 16:30:27 28 4
gpt4 key购买 nike

我需要基于域属性注入(inject)服务,到目前为止我想出了以下内容:

ApplicationHolder.application.getServiceClass("package.${property}Service").clazz

但是以这种方式加载它不会注入(inject)它的依赖服务。我做错了吗?

最佳答案

新实例将绕过 Spring 的依赖管理;您需要从应用程序上下文中获取配置的单例 bean。改用这个:

def service = ApplicationHolder.application.getMainContext().getBean("${property}Service")

假设“属性”是服务的部分 bean 名称,即对于 FooBarService,属性必须是“fooBar”。如果它是“FooBar”,那么您可以使用 GrailsNameUtils.getPropertyName() 来修复它:
import grails.util.GrailsNameUtils

String beanName = GrailsNameUtils.getPropertyName(property) + 'Service'
def service = ApplicationHolder.application.getMainContext().getBean(beanName)

关于Grails:在域类中动态注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814139/

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