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

2022-09-01 11:41:31

具体而言

我想在春季启动中执行多个URL映射(换句话说是别名)

详细地

在我的弹簧启动应用程序中,客户控制器类主要映射到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,属性文件配置在大多数情况下都很有用,因为自动配置正在屋顶下工作。

  1. 有没有办法使用属性文件做同样的事情。
  2. 在春季启动中执行URL映射时要遵循的最佳实践是什么,我可以在编译后轻松更改。

我累了很多才找到这个。但最终在SO社区帮忙。请帮帮我。


答案 1

如果你想从prop文件中驱动映射,那么你可以这样做,如下所示

在 application.properties 中,添加键值对

url.mapping : /test/sample

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

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

而不是在prop文件中提供,如果你提供作为一个,那么你不必重新编译,如果你改变值,只需重新启动(我希望你可以这样做,没有自己尝试过)应该可以做到这一点。url.mappingjvm arg

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

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

答案 2

请看一下个例子。

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

这样,网址将如下所示:和localhost:8080/Hellolocalhost:8080/Hello/otherMapping

编辑:

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

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

推荐