0

我想创建一个基本控制器类,我的其他控制器将从中继承。我有一个简单的公共 api,它通过查询字符串获取身份验证令牌,所以我想这样做:

public class MyBaseController {
   private String token = "";
   public MyBaseController() {
   }
}

然后我真正的控制器就像:

@Controller
@RequestMapping("/api/users")
public class UserController extends MyBaseControler {

  // controller methods here
}

我的问题是,我如何才能访问我的基本控制器中的 HttpServletRequest,并获取查询字符串参数“?token=abc123”的值并使用该值设置令牌变量。

这个线程安全吗? 我的理解是每个请求都会有一个新的控制器实例,对吗?

4

1 回答 1

2

如果他们是无状态的,你的控制器会更好。

您可以根据需要向它们注入 Spring 服务,但我看不出它们有任何理由必须将令牌的值作为成员变量。

您更有可能希望将令牌存储在会话范围内。我认为你的想法是错误的。

我会指出 Spring 本身已经远离了控制器的继承。它们现在都是基于注释的,没有通用的基类或接口。为什么你认为回归他们放弃的设计是一件好事?

您也不需要基本控制器。

于 2012-12-26T23:28:00.747 回答