【问题标题】:Complex annotation in ScalaScala 中的复杂注释
【发布时间】:2012-09-17 16:37:32
【问题描述】:

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

@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 中有没有一种方法可以编写注释,这样才能正常工作?
有什么办法可以欺骗编译器以我想要的方式生成字节码?

谢谢, 约翰

【问题讨论】:

    标签: scala jakarta-ee annotations


    【解决方案1】:

    试试这个

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

    【讨论】:

    猜你喜欢
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2013-03-19
    • 1970-01-01
    • 2014-07-30
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多