自定义注解获取controller层和Mapping的请求url全称,请用java语言编写
时间: 2024-03-02 11:49:54 浏览: 73
一款基于Java注解的elasticsearch mapping生成工具,支持ES 5.2.0所有可选参数.zip
好的,以下是Java代码实现:
首先,自定义一个注解,例如`@MyAnnotation`:
```
import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "";
}
```
然后,在Controller层的方法上添加该注解,并指定请求的URL:
```
@RestController
@RequestMapping("/api")
public class MyController {
@MyAnnotation("/hello")
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
```
最后,在需要获取请求URL的地方,使用Java反射机制获取方法上的注解和请求URL:
```
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
// 获取Controller类
Class<?> clazz = MyController.class;
// 获取所有方法
Method[] methods = clazz.getDeclaredMethods();
// 遍历所有方法
for (Method method : methods) {
// 判断方法上是否有MyAnnotation注解
if (method.isAnnotationPresent(MyAnnotation.class)) {
// 获取MyAnnotation注解
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
// 获取注解上的请求URL
String url = annotation.value();
// 拼接完整的请求URL
String fullUrl = clazz.getAnnotation(RequestMapping.class).value()[0] + url;
// 输出完整的请求URL
System.out.println(fullUrl);
}
}
}
}
```
以上代码输出结果为`/api/hello`,即完整的请求URL。
阅读全文