LogController 注解可以拿到类上面的@RequestMapping注解里面的url信息吗
时间: 2024-02-01 21:15:20 浏览: 76
springmvc-RequestMapping:根据映射的 URL 定位具有 @RequestMapping 注释的整个类或特定处理程序方法
5星 · 资源好评率100%
`LogController` 注解本身并不能直接获取类上面的 `@RequestMapping` 注解里面的 URL 信息。但是,可以通过反射来获取类上面的 `@RequestMapping` 注解,然后再获取 URL 信息。
具体实现可以参考以下示例代码:
```java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogController {
// 定义空注解
}
@Component
@LogController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
// 在切面中获取类上面的 @RequestMapping 注解里面的 URL 信息
@Aspect
@Component
public class LogAspect {
@Pointcut("@within(com.example.LogController)")
public void logController() {}
@Before("logController()")
public void before(JoinPoint joinPoint) {
Class<?> clazz = joinPoint.getTarget().getClass();
RequestMapping requestMapping = clazz.getAnnotation(RequestMapping.class);
String url = requestMapping.value()[0];
System.out.println("URL: " + url);
}
}
```
在上述代码中,我们定义了一个 `@LogController` 注解,并将它标记在了 `MyController` 类上面。同时,我们也将 `@RequestMapping` 注解标记在了 `MyController` 类上面,并设置了 `value` 属性为 `/api`。
在 `LogAspect` 切面中,我们使用 `@within` 注解来匹配所有被 `@LogController` 注解标记的类,并在 `before` 方法中获取类上面的 `@RequestMapping` 注解,并从中取出 URL 信息。最终,我们将 URL 信息打印到控制台上。
阅读全文