如何在Spring Boot中执行多个URL映射(别名)

时间:2015-04-14 18:23:20

标签: java spring spring-mvc spring-boot

具体

我想在spring boot

中进行多个URL映射(换句话说是别名)

详情

在我的春季启动应用程序中 客户控制器类主要映射到/customer网址,如下所示我想创建易于更改的别名

@Controller
@RequestMapping(value = "/customer")
public class CustomerController{

在我正常的spring应用程序中,我在XML中进行映射,我可以进行如下的URL映射。

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="mappings">
    <props>
       <prop key="/customer.htm">customerController</prop>
       <prop key="/tester.htm">customerController</prop>
     </props>
   </property>
</bean>

<bean id="customerController" 
    class="com. ... .controller.CustomerController" />

Spring boot,属性文件配置在大多数情况下都很有用,因为autoconfig在屋顶下工作。

  1. 有什么方法可以使用属性文件做同样的事。
  2. 在spring boot中进行URL映射时要遵循的最佳做法是什么,我可以在编译后轻松更改。
  3. 我累了很多才发现这个。但最终在SO社区的帮助下结束了。请帮帮我。

2 个答案:

答案 0 :(得分:15)

如果你想从支柱文件中推出映射,那么你可以按照下面这样做

在application.properties中,添加键值对

url.mapping : /test/sample

在控制器上,您可以执行以下操作:

@Controller
@RequestMapping(value = { "${url.mapping}" })
public class CustomerController{

如果您将url.mapping作为jvm arg提供,而不是提供支持文件,那么如果您更改了值,则不必重新编译,只需重新启动(我希望您可以做,自己没试过)应该做的伎俩。

对于多个映射,您必须为每个映射添加一个映射,并将其映射到控制器中,如下所示。

@Controller
@RequestMapping(value = { "${url.mapping}","${url.mapping.two}" })
public class CustomerController{

答案 1 :(得分:12)

看看this示例。

映射网址的最佳方法是在带注释的控制器中执行此操作。

基本上:

@RestController
public class HelloController {

    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

IMHO 最佳实践是为控制器使用一个映射,为每个方法使用一个映射:

    @RestController
    @RequestMapping("/Hello")
    public class HelloController {

        @RequestMapping("/")
        public String index() {
            return "Greetings from Spring Boot!";
        }

        @RequestMapping("/otherMapping")
        public String otherMapping() {
            return "Greetings from Spring Boot!";
        }
    }

这样,网址就会显示为:localhost:8080/Hellolocalhost:8080/Hello/otherMapping

修改

对于多个映射,您可以使用:

@RequestMapping({ "/home", "/contact" })