【发布时间】:2017-02-14 13:34:34
【问题描述】:
我的公司正在研究从 Struts 迁移到 Spring MVC。我们有大量的 Web 应用程序,它们在任何特定于应用程序的控制器(在 Struts 中称为 Action)之前使用相同的自定义逻辑基础层。在 Struts 中,我们通过一些扩展 Action 类的类来处理这个问题。然后 webapps 扩展了这些自定义类。
我试图找到使用 Spring MVC(最新版本 4.3.4)实现相同结果的好方法。从我所看到的 处理程序拦截器 并不完全符合我的需要。 requestMapping 无法确定需要执行的自定义逻辑。
有没有办法创建像 @ControllerCustomA 和 @ControllerCustomB 这样的自定义注释,而不是 @Controller 来检查内容、日志等。
然后有
//check authentication, for instance
@ControllerA
public class user{
@GetMapping("/user")
public String getUser() {
//application specific logic
}
}
【问题讨论】:
-
例如,如果它正在检查身份验证,那么您想使用 spring-security 注释。如果它更通用,请使用通用 spring-aop。
-
@OrangeDog 不仅如此,还有身份验证。我一直在研究 Spring-security,但是将我们的系统与它混合起来会很复杂,即使使用自定义 UserServiceDetails...
-
@Nikolai 你能列举一下你的用例吗?
-
你不能在控制器之前添加一个过滤器并将你的逻辑放在那里吗?
-
不同的控制器行为是什么意思? Spring 非常灵活,您几乎可以使用它构建任何应用程序。我不知道您的应用程序域,所以我只能给您指点。您是否研究过文档,尤其是 Web 部件?例如,
@ModelAttribute与@ControllerAdvice结合使用可能非常适合您的应用程序。它允许您将每个请求的通用数据以及用户特定数据(如用户名或授予的角色等)放入模型映射中。