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

How to do Multiple URL Mapping (aliases) in Spring Boot

具体

我想在 spring boot

中做多个 URL 映射(换句话说别名)

详细

在我的 spring 启动应用程序中 Customer Controller class 主要映射到 /customer URL 如下 我想创建易于更改的别名

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

在我在 XML 中进行映射的正常 spring 应用程序中,我可以进行 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 引导,属性 文件配置在大多数情况下很有用,因为自动配置在屋顶下工作。

  1. 有什么方法可以使用 属性 文件来做同样的事情。
  2. 在 spring 引导中执行 URL 映射时,我可以在编译后轻松更改的最佳做法是什么。

我找这个很累。但最后还是得到了 SO 社区的帮助。请帮我解决这个问题。

看看 this 示例。

映射 url 的最佳方法是在带有注释的控制器中进行映射。

基本上:

@RestController
public class HelloController {

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

}

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

    @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!";
        }
    }

那样 url 看起来像:localhost:8080/Hellolocalhost:8080/Hello/otherMapping

编辑:

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

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

如果你想从道具文件中驱动贴图,那么你可以按照下面的方式进行

在你application.properties,添加键值对

url.mapping : /test/sample

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

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

而不是在 prop 文件中提供,如果您将 url.mapping 作为 jvm arg 提供,那么如果您更改值,则不必重新编译,只需重新启动(我希望您可以做,我自己没有尝试过)应该可以解决问题。

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

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