当前位置: 首页 > 知识库问答 >
问题:

通知中的多个带注释的参数值

龙昊焱
2023-03-14

如何在我的建议中获得注释参数的值。我有如下场景:

@Custom
public void xxxx(@Param("a1") Object a, @Param("a2") Object b)
{
    //TODO
}

我希望为所有具有@Custom注释的方法定义切入点,这里没有什么花哨的。问题是我想在建议中获取用@Param标记的参数和注释本身的值。这种带注释的参数的数量不是固定的,可以有任何数量,也可以根本没有。

到目前为止,我已经使用了反射,我能够获取带有注释的参数,但不能获取注释的值。

共有1个答案

淳于乐池
2023-03-14

这就是我获得注释价值的方式:

我的注释是@Name:

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.PARAMETER)
@interface Name {
    String value();
}

有代码负责获取它:

Annotation[][] parametersAnnotations = method.getParameterAnnotations();

for (int i = 0; i < parametersAnnotations.length; i++) {
    Annotation[] parameterAnnotations = parametersAnnotations[i];
    Annotation nameAnnotation = null;

    for (Annotation annotation : parameterAnnotations) {
        if (annotation.annotationType().equals(Name.class)) {
            nameAnnotation = annotation;
            break;
        }
    }

    if (nameAnnotation != null) {
        String textInAnnotation = ((Name)nameAnnotation).value();
    }
}
 类似资料:
  • 我在想一个一般的请求映射问题。在不选择任何特定MVC框架的情况下,将基于注释的请求映射与简单的参数检查器映射进行比较,哪一个更好? 假设我想创建一个web服务,它应该处理例如“添加”和“删除”操作。 使用注释,它看起来像这样: 使用参数,它将如下所示: 在第二个示例中,假设Operation对象是从JSON对象构建的。我们的想法是,我们只有一个通用的操作,它有一个类型参数,我们总是调用相同的请求(

  • 我有一个可用于注释的方面: 连接点: 我可以在具有

  • 我正在使用hibernate注释,为此,在中,我需要添加注释类,比如这里p是包名,Customer是注释bean。 假设我有20个此类注释类,这意味着我必须为该类编写20个映射行。在Spring中,有一个属性,可以用来注册/加载指定包中的所有hibernate注释类。 既然我没有使用Spring,那么我们可以在Hibernate中拥有相同的功能吗?

  • 我创建了自定义注释。我将用它来注释方法参数。 我在这里找到了一些示例代码,展示了如何创建针对自定义注释的切入点。 所以现在,我创建了一个带切入点的方面。但是我不知道如何获得用注释的参数值。

  • 以下是我在泽西使用的方法签名,当我调试/运行程序时,我收到错误: [[致命]方法公共javax。ws。rs.core。响应com。xxxx。xxxxx。Xxxxx。xxxxx。资源类com上的xxxxxxxx(java.lang.String、java.lang.String、java.lang.String、javax.ws.rs.container.ContainerRequestContex

  • 假设我有这样一种方法: 是否有一个切入点表达式可以选择所有参数带有@CustomAnnotation注释的方法?如果是这样的话,有没有一种方法可以让我访问“value”参数?