在 Java 中使用面向方面编程和注释标记方法

发布于 2024-12-08 04:28:19 字数 483 浏览 0 评论 0原文

我有一个基于 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 URL时会自动调用。

我发现我的资源方法有越来越多的“通用”逻辑,必须使用每个方法执行:日志记录、安全检查、查询参数验证等。我相信这需要面向方面编程(AOP),但是我以前没有使用过这项技术。如果我使用 AOP 框架之一,我的注释“标签”是否会被保留,以便 JAX-RS 驱动程序可以找到我的资源方法?哪些 AOP 框架可以满足我的要求?

I have a JAX-RS based (RESTEasy) REST server that uses Java annotations to label resource methods with URLs, etc. For example, a methods can have the annotations

@javax.ws.rs.GET
@javax.ws.rs.Path("/users/{user_id}")
public Response getUser(...)

and will be called automatically when a client calls the GET /users/1234 HTTP/1.1 URL.

I am finding that my resource methods have more and more "common" logic that must be executed with every method: logging, security checks, query parameter validation, etc. I believe that this calls for Aspect-Orient-Programming (AOP), but I have not used this technology before. If I use one of the AOP frameworks, will my annotation "labeling" be preserved so that the JAX-RS driver can find my resource methods? Which AOP frameworks will work with my requirements?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

謌踐踏愛綪 2024-12-15 04:28:19

AspectJ 满足您的要求:AspectJ 可以拦截带注释方法的调用或执行,而无需更改或删除注释。

例如,我们在 JPA 实体上使用 AspectJ,这些类对 Hibernate 仍然可见。

AspectJ fulfills your requirements: AspectJ can intercept calls or executions of annotated methods without changing or removing the annotations.

For instance, we used AspectJ on JPA entities and these classes were still visible by Hibernate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文