gpt4 book ai didi

java - Spring MVC Controller 中的硬编码@RequestMapping URL

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:52 26 4
gpt4 key购买 nike

我正在研究 Spring 3,并且正在一个简单的 Web 应用程序中使用它。

现在我正在使用注释实现一个 Spring MVC Controller ,我想知道:是否有使用 @RequestMapping 注释的最佳实践?

我的意思是:我已经看到通常在这个注解中映射的 URL 在类中是硬编码的...
有没有办法以“松耦合方式”传递 URL(以获得更可重用的类)?

我知道可以使用一些通配符,但我认为这不是解决方案...我错了吗?

编辑:

我添加一个例子来更好地解释我的疑问。

假设我希望我的 Controller 由对 /foo/bar/baz/mypage.htm 的请求触发,在我的 Controller 中,处理程序方法将使用 @RequestMapping("/foo/bar/baz/mypage").

现在我决定将触发我的 Controller 的 URL 更改为 /foo/bar/otherpage.htm,所以我需要编辑我的类,将 @RequestMapping("/foo/bar/otherpage") 在我的处理程序方法上,重新编译项目并再次部署它。

在我看来不太实用......

最佳答案

当前带注释的 Controller 不是很容易配置。

据我所知,解决此问题的唯一可能方法是使用替代方案 HandlerMappings为了配置 Controller 的“基本 URL”。例如如下:

// Note the absense of @Controller to prevent this controller
// from being discovered by DefaultAnnotationHandlerMapping
public class FooController {
@RequestMapping("/list") public String list(...) { ... }
@ReqeustMapping("/save") public String save(...) { ... }
}

.

<bean 
class = "org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping" />

<bean name = "/foo" class = "FooController" />
<bean name = "/bar" class = "FooController" />

在此示例中,FooController 的两个实例处理 /foo/list/foo/save/bar/list/bar/save 分别。

即将推出的 Spring 3.1 将具有改进的 Spring 3.1 架构 ( Spring 3.1 M2: Spring MVC Enhancements ),似乎更灵活,但我还没有检查过。

关于java - Spring MVC Controller 中的硬编码@RequestMapping URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com