基本控制器,设置私有成员变量,这样安全吗?

时间:2012-12-26 23:22:19

标签: java spring spring-mvc

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

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

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

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

  // controller methods here
}

我的问题是,如何在我的基本控制器中访问HttpServletRequest,并获取querystring参数“?token = abc123”值并使用值设置标记var。

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

1 个答案:

答案 0 :(得分:2)

如果他们是无国籍人,你的控制器会更好。

您可以根据需要使用Spring服务注入它们,但我没有看到任何理由为什么它们必须将令牌的值作为成员变量挂起。

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

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

您也不需要基本控制器。

相关问题