0
点赞
收藏
分享

微信扫一扫

SSM 项目因为需要加载多个properties配置文件,处理方式


最近在出些关于SSM环境搭建的教程,在我们搭建SSM架构,一般都无法避免需要加载多个xxxx.properties配置文件。
 

也许很多人不注意,就会出现类似以下的错误:

Could not resolve placeholder 'redis.maxIdle' in string value "${redis.maxIdle}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'redis.maxIdle' in string value "${redis.maxIdle}"

这种是什么情况,就是因为加载的配置文件项 读取不了值;
为什么读取不了值,因为spring扫描加载的时候只读取了一份xxxx.properties配置文件,所以在后面配置加载的xxxx.properties配置文件上面的值基本都拿不到了。

这种情况,需要这么设置:

情景: 现在我需要加载jdbc.properties配置文件和 redis.properties配置文件。

那么在配置加载jdbc.properties的时候,加上ignoreUnresolvablePlaceholders ,设置为true,如下:

<!--数据库配置 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>

然后在配置加载  redis.properties的时候,也一样加上,如下:

<!--引入Redis配置文件-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:redis.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>

这样,就解决了加载多个配置文件的问题了。

PS:关于ignoreUnresolvablePlaceholders设置,其实如果你仅仅需要加载2份 properties配置文件,那么你第一份设置true,第二份设置false或者ture都可以。 直白点,你最后一份可以设置为false,但是我建议直接全部设置true。
 

 

 

其实如果你不想管那么多,把全部配置文件的项都放在一个config.properties里面也是可以的,不过我不推荐这样,这样不够优雅,我们编码需要优雅。

OK,到此。

举报

相关推荐

0 条评论