Scala中的复杂注释

时间:2012-09-17 16:37:32

标签: scala java-ee annotations

为了使用JBoss在Scala中创建消息驱动bean,我需要按如下方式对类进行注释:

@MessageDriven(
        activationConfig=Array(@ActivationConfigProperty(propertyName="destination", propertyValue="java:/queue/mail") ),
        messageListenerInterface=classOf[MessageListener])
class MailService extends MessageListener {    
    def onMessage(m: Message) {
        ...
    }   
}

问题在于注释包含一个本身就是注释的属性,而Scala编译器似乎无法应对它。

错误信息是:“非法启动简单表达式”,在第二行的@符号周围突出显示,紧跟在“activationConfig”之后。

在Java中我会按如下方式编写注释:

@MessageDriven(
        activationConfig={@ActivationConfigProperty(propertyName="destination", propertyValue="java:/queue/mail")}, 
        messageListenerInterface=MessageListener.class)

在Scala中有没有办法编写注释,这样才有效? 有没有办法欺骗编译器以我想要的方式生成字节代码?

谢谢, 约翰

1 个答案:

答案 0 :(得分:2)

试试这个

@MessageDriven(
  activationConfig = Array[ActivationConfigProperty](
    new ActivationConfigProperty(propertyName = "desctination", propertyValue = "java:/queue/mail")),
  messageListenerInterface = classOf[MessageListener]
)
class MailService extends MessageListener {
  def onMessage(m: Message) {
  //...
  }
}