Spring配置文件通过${}获取不到属性

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name ‘jedisConnectionFactory’ defined in class path resource [spring-redis.xml]: Could not resolve placeholder ‘redis.host’ in string value " r e d i s . h o s t " ; n e s t e d e x c e p t i o n i s j a v a . l a n g . I l l e g a l A r g u m e n t E x c e p t i o n : C o u l d n o t r e s o l v e p l a c e h o l d e r ′ r e d i s . h o s t ′ i n s t r i n g v a l u e " {redis.host}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'redis.host' in string value " redis.host";nestedexceptionisjava.lang.IllegalArgumentException:Couldnotresolveplaceholderredis.hostinstringvalue"{redis.host}"

原因是因为Spring容器最多只能定义一个<context:property-placeholder />,其他的会被忽略掉

解决方法

   <context:property-placeholder location="classpath:database.properties,classpath:redis.properties"/>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`@ConfigurationProperties`注解是Spring Boot中用来自动绑定外部配置(如YAML、XML或环境变量)到Java Bean属性的一种方式。当你在一个@Configuration类上应用这个注解,并指定一个特定的前缀,Spring会尝试从相应的配置源查找具有该前缀的配置值。 有时候,可能会遇到一会儿能获取配置,一会儿又获取不到的问题,这可能由以下几个原因造成: 1. **刷新时机**:如果配置发生变化但应用程序没有重新启动,你需要手动调用`refresh()`方法或者等待Spring Boot的热部署机制自动刷新配置。如果没有触发这些刷新行为,旧的配置可能仍会被加载。 2. **配置文件位置**:确认配置文件是否正确放置在应用的classpath路径下或环境变量设置是否正确,比如对于YAML文件,可能是application.yml或application.properties。 3. **错误的前缀匹配**:检查`@ConfigurationProperties`的前缀是否和实际配置文件中的键相匹配。如果不匹配,Spring将无法找到对应的配置值。 4. **缓存问题**:Spring Boot对配置有一个默认的缓存,如果配置被改变后没有清除缓存,之前读的值可能会继续有效。 5. **访问控制**:权限管理也可能导致某些配置不能被访问。检查是否有合适的权限策略允许读特定的配置。 6. **异常处理**:如果在解析配置时发生错误,Spring Boot会捕获并记录异常,导致后续配置的加载失败。查看日志可以帮助定位问题。 如果以上排查都没有发现问题,考虑提供更详细的代码片段以及出错的具体场景,以便更好地分析原因。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值