我的所有控制器(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中创建全局变量吗?
答案 0 :(得分:2)
我将使用基本URL
创建一个BaseControllerimport 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>
在控制器,
中@Autowired 字符串controllerURL;
和
@RequestMapping(value = controllerURL +"/qrcode/blablbal", method = RequestMethod.GET)