Micronaut 3无法加载application-dev.yml环境专属配置如何解决
问题原因
- 手动创建的上下文未激活dev环境:你通过
Micronaut.build().defaultEnvironments("dev")设置的默认环境仅作用于该方法启动的应用上下文,后续调用ApplicationContext.run()创建的是独立的全新上下文,未指定激活环境的情况下不会加载application-dev.yml,因此只能读取到主配置文件的属性。 - 配置键大小写不统一:主配置
application.yml中jwks下的键为IdentityServer(首字母大写),环境配置application-dev.yml中对应键为identityServer(首字母小写),二者会被识别为不同的属性路径,即便加载了dev环境配置也无法触发同名属性覆盖。
解决方案
- 统一两个配置文件中jwks下的键名,完全保持一致,比如统一改为小写开头的
identityServer,避免出现大小写差异导致的属性路径不匹配问题。 - 修正上下文的环境激活逻辑,二选一即可:
- 如果需要手动创建ApplicationContext,调用时传入dev环境参数:
ApplicationContext.run("dev") - 如果是在已启动的Micronaut应用中获取配置Bean,不要手动创建新的ApplicationContext,直接通过依赖注入注入
OAuthProperties即可,或者使用应用启动时生成的上下文实例获取Bean。
- 如果需要手动创建ApplicationContext,调用时传入dev环境参数:
内容的提问来源于stack exchange,提问作者San Jaisy
相关产品推荐
相关产品推荐

