在Spring MVC中创建全局变量的最佳方式
我的所有控制器(requestMapping url)都以相同的变量开始。在Spring MVC中创建全局变量的最佳方式
myController/blablabal
我正在考虑创建一个全局变量来代替“myController的”所以在未来,如果我更改URL名字,我只需要在一个地方改变。 我目前这样做的方式是创建一个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中创建一个全局变量?
创建一个常量并使用它。编译器会在编译时合并常量和剩余的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
}
您可以通过如下豆创建全局变量。
1.In您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)
当我尝试这个时,它说属性必须是恒定的。我相信controllerURL必须是“静态最终”。 – user3369592
可能是真的,我在我的答案中写了伪代码。 –
如果它必须是“静态最终”,那么它可能必须被初始化。 – user3369592
我将创建一个BaseController基本URL
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";
}
}
这就是为什么我想about..but我真的很想学习如何创建一个bean作为全局变量。 – user3369592