java - 如何在 spring context.xml 中使用 pom 属性?

标签 java spring maven

我有 pom 文件(pom.xml):

      ...
  <properties>
      <certificate-manager.default-client-certDN>Default Client</certificate-manager.default-client-certDN>
      <certificate-manager.path-to-store>D:\Projects\PPP\apache-tomcat-7.0.29\</certificate-manager.path-to-store>
      <certificate-manager.store-password>12345</certificate-manager.store-password>
      <certificate-manager.alias>root</certificate-manager.alias>
  </properties>

和属性文件(my.properties):

certificateManager.defaultClientCertDN=${certificate-manager.default-client-certDN}
certificateManager.pathToStore=${certificate-manager.path-to-store}
certificateManager.storePassword=${certificate-manager.store-password}
certificateManager.alias=${certificate-manager.alias}

我想在我的 spring context.xml(appContext.xml) 中使用这个属性:

    <context:property-placeholder location="classpath:my.properties"/>

    <bean id="certificateManager" class="com.exadel.mdp.security.certificate.CertificateManagerImpl">
        <constructor-arg name="defaultClientCertDN" value="${certificateManager.defaultClientCertDN}"/>
        <constructor-arg name="pathToStore" value="${certificateManager.pathToStore}"/>
        <constructor-arg name="storePassword" value="${certificateManager.storePassword}"/>
        <constructor-arg name="alias" value="${certificateManager.alias}"/>
    </bean>

当我尝试运行应用程序时,出现下一个异常:

ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'certificateManager' defined in class path resource [appContext.xml]: Could not resolve placeholder 'certificateManager.defaultClientCertDN' in string value [${certificateManager.defaultClientCertDN}]
    at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209)
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.processProperties(PropertySourcesPlaceholderConfigurer.java:174)
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:151)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:661) 

最佳答案

我相信你使用 Maven Properties Plugin并为 initialization phase 配置它. Spring 将独立地从属性文件中读取。

关于java - 如何在 spring context.xml 中使用 pom 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16315752/

相关文章:

java - 如何在双向HashMap中实现put()方法?

java - 由于多次引用同一 Java 类,Eclipse(Java 项目)中出现构建错误

c# - 定期从网络共享文件夹中读取文件的最有效方法是什么?

java - 在另一个旁边画一个形状

java - 尝试导入 2 个 jar 文件时,Android Studio 出现 DuplicateFileException

java - eclipse maven项目如何配置热部署

json - 具有枚举键的 Map 的 GSON 自定义序列化器

java - 没有可用的事务性 EntityManager - 使用 JPA Api,Hibernate Session 出错

java - 重用复杂的 spring-fox swagger 注释

maven - 如何列出特定 Maven 插件的所有目标