Grails jms队列注释因最终参数而失败

问题描述

| 我正在使用Grails JMS插件中的批注grails.plugin.jms.Queue,但是我不知道如何使用变量作为name属性的值。 像这样:
private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT

@Queue(name = inDebit )
这给了我以下错误:   属性名称”的类型应为“ java.lang.String \”;但在@ grails.plugin.jms.Queue中找到类型\'java.lang.Object \' 我在用 Grails 1.3.7,Grails JMS插件1.1 在我看来,
inDebit
变量在某处丢失了类型吗?     

解决方法

        它没有丢失其类型,您从未指定过它。改成
private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT
Groovy可以在运行时推断类型,但是正如您所知道的那样,它只是3英镑,这就是编译器看到的。     ,        静态持有人在1.4中已弃用。您应该改用grailsApplication:
def grailsApplication
private static final String inDebit = grailsApplication.config.Q_IN_DEBIT
    ,        这是Groovy批注处理中的一个限制: http://jira.codehaus.org/browse/GROOVY-3278     ,        不完全是问题的答案,但我认为这是您真正想要做的:
@Queue(name = \'$queue.key.in.config\')
并在您的Config.groovy中放入
jms.destinations.queue.key.in.config=ActualQueueName
在此处查看grails jms文档:serviceMethodListeners 向下滚动到标为“通过配置定义队列名称和订阅者主题”的部分。