调用RESTAPI的自定义Java注释

调用RESTAPI的自定义Java注释,java,annotations,artifact,Java,Annotations,Artifact,我想创建一个Java注释@Ping,它向我部署在Docker容器中的RESTAPI发送POST请求 到目前为止,我创建了以下注释: @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Ping { String endpoint(); } 如您所见,我希望此注释基于方法。此方法将允许我提供其他服务可用或不可用的状态 我还希望将此代码作为Maven工件存储在我自己的repo上,

我想创建一个Java注释@Ping,它向我部署在Docker容器中的RESTAPI发送POST请求

到目前为止,我创建了以下注释:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Ping {
    String endpoint();
}
如您所见,我希望此注释基于方法。此方法将允许我提供其他服务可用或不可用的状态

我还希望将此代码作为Maven工件存储在我自己的repo上,在那里我将添加更多的注释,以便在我的其他服务上使用它

我看过一些教程,但不知道如何将这种行为具体化,而且我一开始也不能让它起作用

据我所知,现在我需要一个包含逻辑的处理程序,即向我的API发送POST请求,但我不确定如何做到这一点。 你能帮我开始吗?注释是这样做的好主意吗


谢谢

创建一个方法级注释,并使用AOP编写一个调用RESTAPI的逻辑

@Around("execution(@Ping * *(..))")
public void entr(ProceedingJoinPoint joinPoint) throws Throwable {
 System.out.println("before method");
 joinPoint.proceed();
 System.out.println("after method");
}

为了添加到@Urvil Joshi的答案中,考虑到我不想添加Spring依赖项,我创建了一个包含以下内容的PingAspect.aj文件:

public aspect PingAspect {

    pointcut hasPingAnnotation(Ping ping): @annotation(ping);

    pointcut execute() : execution(* * (..));

    Object around(Ping ping) : execute() && hasPingAnnotation(ping) {
        System.out.println("Before method execution");
        String endpoint = ping.endpoint();
        System.out.println("Endpoint = " + endpoint);
        Object result = proceed(ping);
        System.out.println("After");
        return result;
    }
}
与ajc编译器完美配合!
希望它能有所帮助

Annotation并不是真的靠自己做事情。你到底在找什么?当调用您注释的方法时,是否进行rest调用?您需要实现一些AOP。是的,它可以完全外部化这一点,但坦率地说,我真的不明白这一点。因此,我需要的第一件事是ping,每次调用我的方法时,我都想ping我的API以用于分析目的。然后,我的想法是创建我需要的更多注释,比如@RequireHeader强制使用我使用的HTTP头,以及@RequireHTTPS强制通过HTTPS使用HTTPS谢谢!这就是我要找的!