2016-07-28 129 views
0

我的所有控制器(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中创建一个全局变量?

回答

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 
} 
+0

这就是为什么我想about..but我真的很想学习如何创建一个bean作为全局变量。 – user3369592

1

您可以通过如下豆创建全局变量

1.In您bean声明

使用java.lang.StringString代替在构造类型属性。

<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) 
    
    +0

    当我尝试这个时,它说属性必须是恒定的。我相信controllerURL必须是“静态最终”。 – user3369592

    +0

    可能是真的,我在我的答案中写了伪代码。 –

    +0

    如果它必须是“静态最终”,那么它可能必须被初始化。 – user3369592

    2

    我将创建一个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"; 
        } 
    } 
    
    相关问题