我有一个基于JAX-RS(RESTEasy)的REST服务器,它使用Java注释来标记带有URL等的资源方法。例如,一个方法可以有注释
@javax.ws.rs.GET
@javax.ws.rs.Path("/users/{user_id}")
public Response getUser(...)
并在客户端调用GET /users/1234 HTTP/1.1
网址时自动调用。
我发现我的资源方法有越来越多的“通用”逻辑,必须用每个方法执行:日志记录,安全检查,查询参数验证等。我相信这需要Aspect-Orient-Programming(AOP) ),但我之前没有使用过这项技术。如果我使用其中一个AOP框架,我的注释“标签”是否会被保留,以便JAX-RS驱动程序可以找到我的资源方法?哪个AOP框架可以满足我的要求?
答案 0 :(得分:1)
AspectJ满足您的要求:AspectJ可以在不更改或删除注释的情况下拦截已注释方法的调用或执行。
例如,我们在JPA实体上使用了AspectJ,这些类仍然可以被Hibernate看到。