Spring Boot:定制static path mappings

简介:

Spring Boot:定制URL匹配规则一文中我们展示了如何调整URL请求匹配到对应的控制器方法的规则。类似得,也可以控制应用程序对静态文件(前提是被打包进部署包)的处理。

假设我们需要通过URLhttp://localhost:8080/internal/application.properties对外暴露当前程序的配置。

How Do

  • 在WebConfiguration类中添加相应的配置,代码如下:
@Overridepublic 
void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/internal/**").
            addResourceLocations("classpath:/");
}
  • 通过mvn spring-boot:run启动应用程序
  • 通过postman访问http://localhost:8080/internal/application.properties就得到下列的结果

通过配置项对外暴露程序的配置信息

分析

通过addResourceHandlers(ResourceHandlerRegistry registry) 方法可以为应用程序中位于classpath路径下或文件系统下的静态资源配置对应的URL,供其他人通过浏览器访问。在这个例子中,我们规定所有以“/internal”开头的URL请求会在classpath:/目录下查找信息。

  • registry.addResourceHandler("/internal/*")方法添加一个资源处理器,用于注册程序中的静态资源,该函数返回一个ResourceHandlerRegistration对象,这个对象可以进一步配置。/internal/*字符串是一个路径模式串,PathMatcher接口用它匹配对应的URL请求,这里默认使用AntPathMatcher进行匹配。
  • 由上个方法返回的ResourceHandlerRegistration实例调用addResourceLocations("/classpath:/")方法来规定从哪个目录下加载资源文件。这个目录路径或者是有效的文件系统路径,或者是classpath路径。

PS:通过setCachePeriod(Interger cachePeriod)方法可以设置资源处理器的缓存周期——每隔cachePeriod秒就缓存一次。


    相关文章
    |
    11月前
    |
    Java 应用服务中间件 Maven
    SpringBoot 项目瘦身指南
    SpringBoot 项目瘦身指南
    201 0
    |
    11月前
    SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
    SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
    249 0
    |
    8天前
    |
    安全 前端开发 Java
    Spring Boot 项目中触发 Circular View Path 错误的原理与解决方案
    在Spring Boot开发中,**Circular View Path**错误常因视图解析与Controller路径重名引发。当视图名称(如`login`)与请求路径相同,Spring MVC无法区分,导致无限循环调用。解决方法包括:1) 明确指定视图路径,避免重名;2) 将视图文件移至子目录;3) 确保Spring Security配置与Controller路径一致。通过合理设定视图和路径,可有效避免该问题,确保系统稳定运行。
    42 0
    |
    3月前
    |
    XML Java 应用服务中间件
    Spring Boot 两种部署到服务器的方式
    本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
    1105 17
    Spring Boot 两种部署到服务器的方式
    |
    27天前
    |
    Java 数据库 微服务
    微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
    在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
    51 0
    |
    5月前
    |
    存储 运维 安全
    Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
    通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
    168 2
    |
    6月前
    |
    SQL JSON Java
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
    174 1
    mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
    |
    6月前
    |
    缓存 NoSQL Java
    Springboot自定义注解+aop实现redis自动清除缓存功能
    通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
    156 2
    |
    10月前
    |
    运维 Java 关系型数据库
    Spring运维之boot项目bean属性的绑定读取与校验
    Spring运维之boot项目bean属性的绑定读取与校验
    97 2
    |
    10月前
    |
    存储 运维 Java
    Spring运维之boot项目开发关键之日志操作以及用文件记录日志
    Spring运维之boot项目开发关键之日志操作以及用文件记录日志
    103 2