我正在使用Grails JMS插件中的注释grails.plugin.jms.Queue,但我无法弄清楚如何使用变量作为name属性的值。
像这样:private static final inDebit = ConfigurationHolder.config.Q_IN_DEBIT
@Queue(name = inDebit )
这给了我以下错误:
属性'name'的类型应为'java.lang.String';但在@ grails.plugin.jms.Queue
中找到了'java.lang.Object'类型
我正在使用 Grails 1.3.7,Grails JMS插件1.1
在我看来,inDebit
变量在某处丢失了它的类型?
答案 0 :(得分:1)
它没有丢失它的类型,你从未指定它。改为
private static final String inDebit = ConfigurationHolder.config.Q_IN_DEBIT
Groovy可以在运行时推断出类型,但正如你所拥有的那样,它只是Object
,这就是编译器所看到的。
答案 1 :(得分:1)
静态持有者正在deprecated in 1.4。您应该使用grailsApplication代替:
def grailsApplication
private static final String inDebit = grailsApplication.config.Q_IN_DEBIT
答案 2 :(得分:0)
这是Groovy注释处理的限制: http://jira.codehaus.org/browse/GROOVY-3278
答案 3 :(得分:0)
这不是问题的答案,但我认为这是你真正想做的事情:
@Queue(name = '$queue.key.in.config')
将jms.destinations.queue.key.in.config=ActualQueueName
放入Config.groovy
点击这里的grails jms文档:serviceMethodListeners 向下滚动到标有“通过配置定义队列名称和订阅者主题”
的部分