如何在 Spring Boot 中进行多个 URL 映射(别名)
Posted
技术标签:
【中文标题】如何在 Spring Boot 中进行多个 URL 映射(别名)【英文标题】:How to do Multiple URL Mapping (aliases) in Spring Boot 【发布时间】:2015-06-20 11:58:20 【问题描述】:具体
我想在 spring boot 中做多 URL 映射(也就是别名)
详细说明
在我的 Spring Boot 应用程序中
客户控制器类主要映射到/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 boot,属性文件配置在大多数情况下都是有用的,因为自动配置在屋顶下工作。
-
我有什么方法可以使用属性文件来做同样的事情。
在 Spring Boot 中进行 URL 映射时遵循的最佳做法是什么,我可以在编译后轻松更改。
我很累才找到这个。但最后还是得到了 SO 社区的帮助。请帮我解决这个问题。
【问题讨论】:
【参考方案1】:如果你想从一个 prop 文件中导出映射,那么你可以这样做
在你的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
【讨论】:
谢谢。这似乎是一种更清洁的方法。 @FarajFarook。接受可以帮助别人和我:)【参考方案2】:看看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/Hello
和 localhost:8080/Hello/otherMapping
编辑:
对于多个映射,您可以使用:
@RequestMapping( "/home", "/contact" )
【讨论】:
感谢您的回答。我更新了我的问题。我需要做多个 URL 映射,比如别名。我宁愿在不重新编译的情况下更改别名映射。 @FarajFarook 查看更新。 “不编译”部分我无能为力。 谢谢叶甫根尼。非常感谢您的帮助。我对你的回答投了赞成票。但是我会等待更多的 cmets 来查找是否有任何方法可以在不重新编译的情况下做到这一点:) 新注解也可以使用:@GetMapping("/path1"', "path2")
以上是关于如何在 Spring Boot 中进行多个 URL 映射(别名)的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义反序列化器 Spring Boot 中读取路径变量或 URL 参数
在 Spring Boot 中创建 PROXY 服务,监听多个端口,并将 GET 请求重定向到新 URL