问题描述
|
我正在使用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
向下滚动到标为“通过配置定义队列名称和订阅者主题”的部分。