问题:
最近使用spring时候, 使用@value注解, 想注入配置文件中的相关属性 .
但是出现下面错误:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder ‘ITEM_INFO’ in string value “${ITEM_INFO}”
但是我发现我配置文件中已经配置了:
<!-- 配置数据库连接池 -->
<context:property-placeholder location="classpath:properties/db.properties" />
<context:property-placeholder location="classpath:properties/resource.properties" />
但是这个resource.properties配置文件中的属性却没有注入进去, 但是我的另一个db.properties配置文件的数据库属性却已经注入进去,这就很奇怪了.
两个配置文件:
我就想, 难道第二个配置文件会被忽略吗?最后网上找了找这个配置的详细信息.
果然:
Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或),其余的会被Spring忽略掉
解决办法:
使用一个配置,同时加载两个文件即可 :
<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:properties/*.properties" />