无法解决占位符| 春季占位符

Ume*_*thi 4 spring

我试图<context:property-placeholder>在我的应用程序中第一次使用Spring 并遇到一些问题,我已经尝试了很多东西,谷歌已经尝试了很多帖子.

我有一个Web应用程序,需要将一些键传递给基础类,正在考虑使用占位符为相同.这是我的应用程序的结构

Main
  -java
  -resources
  -webapp
Run Code Online (Sandbox Code Playgroud)

我有一个project.properties文件resource夹在文件夹内,这就是我的尝试方式

<context:property-placeholder location="classpath:resources/project.properties" />
<beans:bean id="reCaptcha" class="net.tanesha.recaptcha.ReCaptchaImpl">
  <beans:property name="privateKey" value="${demo.recapatcha_private_key}"/>
   <beans:property name="publicKey" value="${demo.recapatcha_public_key}"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)

但我在服务器启动时遇到异常

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'reCaptcha' defined in ServletContext resource [/WEB-INF/spring/appServlet/servlet-context.xml]: Could not resolve placeholder 'demo.recapatcha_private_key'
Run Code Online (Sandbox Code Playgroud)

我已经尝试将project.properties文件放在各个位置,包括内部 WEB-INF/classes和其他几个位置,webapp但没有成功.不确定我做错了什么

Wil*_*ing 6

听起来好像你正在使用Maven项目结构.放置project.properties内部src/main/resources是资源文件的常规做法 - 因为Maven会自动将这些转移到最终工件的类路径中 - 这将/WEB-INF/classes在你的战争中.

但是,您应该修改标记的location属性<context:property-placeholder>并删除resources文件夹前缀.该resources文件夹本身不会传输到/WEB-INF/classes当战争文件是建立-所以不会是运行时类路径的一部分.只传输文件夹内容.

<context:property-placeholder location="classpath:project.properties" />
Run Code Online (Sandbox Code Playgroud)