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

Far*_*ook 14 java spring spring-mvc spring-boot

具体而言

我想在spring boot中进行多URL映射(换句话说别名)

详细地

在我的Spring启动应用程序中, Customer Controller类主要映射到/customerURL,如下所示我想创建易于更改的别名

@Controller
@RequestMapping(value = "/customer")
public class CustomerController{
Run Code Online (Sandbox Code Playgroud)

在我正常的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" />
Run Code Online (Sandbox Code Playgroud)

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

  1. 有什么办法可以使用属性文件做同样的事情.
  2. 在spring boot中进行URL映射时要遵循的最佳做法是什么,我可以在编译后轻松更改.

我累了很多才发现这个.但最终在SO社区的帮助下结束了.请帮帮我.

min*_*ion 15

如果您想要从prop文件中驱动映射,那么您可以执行以下操作

在application.properties中,添加键值对

url.mapping : /test/sample
Run Code Online (Sandbox Code Playgroud)

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

@Controller
@RequestMapping(value = { "${url.mapping}" })
public class CustomerController{
Run Code Online (Sandbox Code Playgroud)

如果你提供url.mappingas作为a 而不是提供prop文件,jvm arg那么你不必重新编译,如果你改变了值,只需重新启动(我希望你能做到,我自己没有尝试过)应该这样做.

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

@Controller
@RequestMapping(value = { "${url.mapping}","${url.mapping.two}" })
public class CustomerController{
Run Code Online (Sandbox Code Playgroud)


Evg*_*rov 13

看看这个例子.

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

基本上:

@RestController
public class HelloController {

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

}
Run Code Online (Sandbox Code Playgroud)

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

    @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!";
        }
    }
Run Code Online (Sandbox Code Playgroud)

这样网址看起来像:localhost:8080/Hellolocalhost:8080/Hello/otherMapping

编辑:

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

@RequestMapping({ "/home", "/contact" })
Run Code Online (Sandbox Code Playgroud)

  • 新的注释也有效:`@GetMapping({"/path1"', "path2"})` (2认同)