Java书签 #SpringCloud:接口请求路径添加统一的Prefix前缀

1. 今日书签

实际项目中,多个应用可能对应多个配置中心,并且应用所对应的请求路径也设置了不同的前缀做业务归属。也可能会存在多个应用共用一个配置中心,那这种情况怎么设置统一的 Prefix 前缀呢?

不妨试试这三种方案。
 

2. 解签方案

1)内嵌Tomcat + 应用配置

使用 spring-boot-starter-web 内嵌 Tomcat。
application.properties 中,添加如下配置:

# SpringBoot 2.* 版本
server.servlet.context-path: /wei

或者,在 application.yml 中,添加如下配置:

# SpringCloud 2.* 版本
server:
  servlet:
    context-path: /wei

不足的是,如果是 DevOps 的多团队敏捷工作流,这种方式可能受限于需要架构同学帮忙确认应用的 application 配置文件(.properties 或者 .yml)与配置中心的应用配置加载并生效的优先级。
 

2)外置Tomcat + 修改server.xml

修改 Tomcat 中的 server.xml 配置,添加如下配置:

<Service name="Catalina">
  <Connector port="8001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="UTF-8" maxParameterCount="1000" maxSpareThreads="750" maxThreads="1000" minSpareTHreads="50" acceptCount="1000" useBodyEncodingForURI="true"/>
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
    <Host name="localhost"  appBase="webapps" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
      <Context path="/wei" docBase="目录" reloadable="true"/>
    </Host>
  </Engine>
</Service>

不足的是,如果是 DevOps 的多团队敏捷工作流,这种方式可能受限于需要运维同学帮忙进行 server.xml 配置,并且在多环境下(开发+测试+预发+生产)极容易出现漏配,添加运维成本,对于敏捷来说不太友好。
 

3)外置Tomcat + 自定义WebMvcConfigurer

通过使用外置 Tomcat + 自定义 WebMvcConfigurer 进行不同应用不同 Prefix 前缀统一设置。
自定义 WebMvcConfigurer:

public class ApiPrefixConfig  implements WebMvcConfigurer {

	/**
	 * Controller请求URL路径统一增加/wei固定前缀
	 */
	@Override
	public void configurePathMatch(PathMatchConfigurer configurer) {
		configurer.addPathPrefix("/wei", c -> c.isAnnotationPresent(Controller.class))
				  .addPathPrefix("/wei", c -> c.isAnnotationPresent(RestController.class));
	}

}

推荐:这样,可以在不修改 server.xml 的情况下,在不需要其他资源支持的情况下,实现 Controller 请求 URL 路径统一增加固定前缀自定义设置。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值