Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 组织spring mvc URL端点,使其保持可重构_Java_Spring_Spring Mvc_Design Patterns - Fatal编程技术网

Java 组织spring mvc URL端点,使其保持可重构

Java 组织spring mvc URL端点,使其保持可重构,java,spring,spring-mvc,design-patterns,Java,Spring,Spring Mvc,Design Patterns,我经常在使用SpringMVC的大型web应用程序上工作,我发现以一种使URL端点保持可重构的方式组织URL端点变得越来越困难。按照惯例,我的控制器可能如下所示: @Controller @RequestMapping(value = ProtocolController.ROOT_MAPPING) public class ProtocolController extends BaseController { public static final String ROOT_MAPPI

我经常在使用SpringMVC的大型web应用程序上工作,我发现以一种使URL端点保持可重构的方式组织URL端点变得越来越困难。按照惯例,我的控制器可能如下所示:

@Controller
@RequestMapping(value = ProtocolController.ROOT_MAPPING)
public class ProtocolController extends BaseController {

    public static final String ROOT_MAPPING = "/protocol";

    @RequestMapping(value="/management", method = RequestMethod.GET)
    public ModelAndView management(){
        ...
    }
}
我可能在应用程序的其他地方有一个视图,它有一个指向“管理”页面的链接,因此视图必须构建URL。在我看来,我可以通过模型访问上下文路径(上下文路径是由
BaseController
注入到模型中的),我可以通过
ProtocolController.ROOT\u映射
访问URL的下一段,但URL的最后一部分只是一个普通的ol'字符串。我选择的视图技术是一种定制的内部解决方案,它涉及编写原始Java以生成HTML:

String url = model.get("contextPath") + ProtocolController.ROOT_MAPPING + "/management"

问题是,如果我更改“/management”端点,我就无法在代码中找到引用它的所有位置。我想我可以用
静态final
字符串替换字符串文字,就像我使用
根映射一样,但是有更干净的方法吗?是否存在组织/引用端点的已知设计模式?

我能想到的与您已经在做的类似。但是,我将把静态变量放在一个中心类中(可能被命名为常量),而不是在每个类中声明静态变量,这样我就不必扫描整个项目来找到这些静态变量?如果您使用的是Spring4.x,那么您可以利用MvcUriComponentsBuilder,并且有相应的标记库。让我知道版本,我可以在同一个版本上详细说明一些事情。不幸的是,我只使用Spring3.2.13。不管怎样,我会看看MvcUriComponentsBuilder,看看我是否能学到一两样东西。