在Spring MVC中创建全局变量的最佳方法

时间:2016-07-28 18:51:58

标签: java spring spring-mvc variables

我的所有控制器(requestMapping url)都以相同的变量开头。

myController/blablabal

我正在考虑创建一个全局变量来替换" myController"所以将来如果我更改URL名称,我只需要在一个地方更改。 我目前这样做的方法是创建一个bean。 我的bean配置文件:

<bean id="controllerURL" class="java.lang.String">
    <constructor-arg type="String" value="tt"/>
</bean>

然后在我的控制器中:

@RequestMapping(value ="/${controllerURL}/qrcode/blablbal", method = RequestMethod.GET)

但是,我似乎无法正确访问此变量controllerURL。我在这里错过了什么吗?或者我们有更好的方法在Spring MVC中创建全局变量吗?

3 个答案:

答案 0 :(得分:2)

我将使用基本URL

创建一个BaseController
import org.springframework.web.bind.annotation.RequestMapping;


@RequestMapping("/base")
public class BaseController {
}

并实施它

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class MyController extends BaseController{

    @RequestMapping("/hello")
    String hello(){
        return "Hello";
    }
}

答案 1 :(得分:1)

创建常量并使用它。编译器将在编译时合并常量和剩余的url。

public class MyConstants {
    public static final String PATH_PREFIX = "/myController/blablabal";
}
import MyConstants.PATH_PREFIX;

@Controller
public class MyController {
    @RequestMapping(path = PATH_PREFIX + "/qrcode/blablbal", method = RequestMethod.GET)
    // method here
}

答案 2 :(得分:1)

您可以使用如下方法创建全局变量使用bean

1.在 bean声明中,

在构造函数类型属性中使用java.lang.String 代替 String

<bean id="controllerURL" class="java.lang.String">
    <constructor-arg type="java.lang.String" value="tt"/>
</bean>
  1. 控制器

    @Autowired 字符串controllerURL;

  2. @RequestMapping(value = controllerURL +"/qrcode/blablbal", method = RequestMethod.GET)