首页 > 解决方案 > Spring在所有控制器方法中执行一个方法而不注入服务

问题描述

我有一个外部 IAM 服务(提供身份验证和授权功能),我想用它来验证用户请求。

我将忽略以下示例中的代码,因为它不相关。

在我的IAMServiceImpl我有authenticate(String token)方法,它将验证令牌。

我想在所有控制器方法中重用此方法,但我想避免在所有控制器中注入IAMServiceImpl

问题:如何注册这个方法以在每个控制器方法的开头调用,而不在所有控制器中注入服务。

注意我必须将令牌传递给服务,我将从请求标头中获取。

谢谢!

标签: javaspring

解决方案


您应该使用面向方面的编程,它是您用例的好解决方案。

查看 Spring 的 AOP 文档,特别是 @Before 建议。

https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop


推荐阅读