0

環境変数に基づいて、異なるデータ ソース定義を使用するようにアプリを設定しようとしていますが、以下のエラーが発生しています。似たような質問をたくさん見ましたが、同じではないようです。

複数のプロパティ ファイルを設定しました。

env-dev.properties
env-test.properties
env-prod.properties
env-.properties

値が「dev」の MEM_ENV というシステム プロパティを作成しました。

私の春のxmlファイルは次のようになります:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    <context:property-placeholder
        location="classpath*:*env-${MEM_ENV}.properties" />
    <bean id="mongoDataSource" class="com.iLearn.persistence.base.MongoDataSourceImpl">
        <property name="server" value="${mongo.server}" />
        <property name="port" value="${mongo.port}" />
        <property name="dbName" value="${mongo.dbName}" />
        <property name="userName" value="${mongo.userName}" />
        <property name="password" value="${mongo.password}" />
    </bean>

私のプロパティファイルは次のようになります。

mongo.server=aServer.com
mongo.port=10003
monog.dbName=aDBName
mongo.userName=aUserName
mongo.password=aPassword

私が得ている例外は次のとおりです。

    message org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'mongoDataSource' defined in class path resource [springAppConfig.xml]: Could not resolve placeholder 'mongo.server' in string value "${mongo.server}"

description The server encountered an internal error (org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'mongoDataSource' defined in class path resource [springAppConfig.xml]: Could not resolve placeholder 'mongo.server' in string value "${mongo.server}") that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'mongoDataSource' defined in class path resource [springAppConfig.xml]: Could not resolve placeholder 'mongo.server' in string value "${mongo.server}"
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
    com.iLearn.security.AccessFilter.doFilter(AccessFilter.java:43)
4

2 に答える 2

1

マシンを再起動するまで、システム変数が機能しなかったようです。その後、正常に機能しました(monog.dbNameのタイプミスを修正した後)。

問題が解決したのがWindowsの再起動なのか、Eclipseの再起動なのか、Tomcatの再起動なのかはわかりません。これらはすべて、再起動時に発生したためです。

これが他の誰かに役立つことを願っています-この問題がある場合は、最初に再起動してみてください。

于 2013-02-23T08:23:56.033 に答える
1

classpathリゾルバーの使い方が間違っています。不要なものを 1 つ削除し*ます。

から変更する、

<context:property-placeholder location="classpath*:*env-${MEM_ENV}.properties" />

<context:property-placeholder location="classpath*:env-${MEM_ENV}.properties" />
于 2013-02-22T10:14:55.903 に答える