Printemps : le Chargement des Propriétés de la Base de données et des fichiers locaux

Je suis en train de charger les propriétés de la base de données. J'ai eu du succès dans cette.
Mais maintenant le problème est que, pour la source de données bean, je veux utiliser des espaces réservés.
Veuillez voir applicationProperties.xml fichier, alors on peut se faire une idée:

<!-- Data Source Bean -->
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${driverClassName}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
</bean>

<!-- My Own class for managing properites came from Database -->
<bean class="PropFromDB.PropFromDB.PropertiesUtil" >
    <property name="propertiesArray">
        <list>
            <ref bean="propertiesFromDB" />
        </list>
    </property>
</bean>

<!-- PropertiesFactoryBean bean -->
<bean id="propertiesFromDB"
    class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties" ref="commonsConfigurationFactoryBean" />
</bean>

<!-- CommonsConfigurationFactoryBean bean -->
<bean id="commonsConfigurationFactoryBean"
        class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean">
    <constructor-arg ref="databaseConfiguration"></constructor-arg>
</bean>

<!-- DatabaseConfiguration bean -->
<bean name="databaseConfiguration" 
    class="org.apache.commons.configuration.DatabaseConfiguration">
    <constructor-arg index="0" ref="dataSource" />
    <constructor-arg index="1" value="properties" />
    <constructor-arg index="2" value="key" />
    <constructor-arg index="3" value="value" />
</bean>

Le code ci-dessus est pour le chargement des propriétés de DB. maintenant, comme vous pouvez le voir pour la source de données de haricot, il y a quelques espaces utilisés. Je l'ai donc inclus cette ligne en haut:

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

databaseForConfiguration.propriétés contient toutes les propriétés requises et est dans le classpath :

driverClassName=org.postgresql.Driver
url=jdbc:postgresql://localhost:5432/mydb
username=user
password=pass

Mais quand je tente de l'exécuter, je reçois de l'exception suivante:

 Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [${driverClassName}]
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:108)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:62)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1489)
    ... 60 more

et similaires pour {url}, {nom d'utilisateur},{mot de passe}.

Que c'est simple à comprendre, que pour PropertiesUtil bean pour initialiser, première source de données bean besoin de l'initialiser. Et pour la source de données de haricots, les propriétés locales des espaces réservés doit être là. Qui, dans ce cas, ne pas tomber.

Je veux ces deux choses, charge des espaces réservés à partir de fichiers locaux et également à partir de la base de données.

Quelqu'un s'il vous plaît aider moi à résoudre ce problème.

merci d'avance.

OriginalL'auteur Jaydeep | 2014-06-09