Spring 应用无法启动,报无法读取配置文件错误
公司研发部门提供了一个组件包,该包在启动的时候会根据配置文件创建 MQ 消费线程,消费指定消息。集成到项目中后项目完全无法启动,报取不到配置的错误。经排查,
配置文件的配置是正确的,但在启动类中就是读不到相关配置。
公司研发部门提供了一个组件包,该包在启动的时候会根据配置文件创建 MQ 消费线程,消费指定消息。集成到项目中后项目完全无法启动,报取不到配置的错误。经排查,
配置文件的配置是正确的,但在启动类中就是读不到相关配置。
通常我们设计 REST 接口时会要求在 API 上增加版本号,以方便在接口升级时保证一定的兼容性。我们假定设计的接口入下:
1 | GET /api/v1/user/{userId} |
在 Spring MVC 中可以这样这样实现:
1 |
|
在 GetMapping
注解中手动指定了接口版本,但每个接口都指定或指定在类上也是非常不方便的,我们希望有一个注解来简化的约束这个配置的过程
Spring 中常用 @PropertySource
注解来加载指定配置文件,但是 @PropertySource
注解也有一些限制,如:
本文将通过扩展的方式解决以上的需求。
@EnableWebMvc
注解并不是像一般理解的那样在 Spring Boot 中使用 Spring MVC 必需要有的配置,而且并不是像字面意思那样启用 Spring MVC 的
功能。
@EnableWebMvc
的作用是引入 DelegatingWebMvcConfiguration
类来支持通过 WebMvcConfigurer
来对 WebMvc 进行配置。但其引入 DelegatingWebMvcConfiguration
的结果是导致 Spring MVC 相关的自动配置功能失效。
Spring 提供了一些 Java 注解用于声明缓存。
@Cacheable
用于触发缓存@CacheEvict
用于失效缓存@CachePut
可用于在不影响方法运行的情况下更新缓存@Caching
用于将多种缓存操作应用到一个方法中@CacheConfig
用于配置同一个类的缓存配置,类中的所有缓存都将共享这个配置Caffeine 是个高性能的开源 Java 内存缓存库,具有较高的命中率和出色的并发能力。在 Spring Boot 中集成也非常简单,提供了各种开箱既用的工具。