2010-08-13 2 views
0

est ici le problème en quelques mots:Pourquoi Spring essaierait-il d'utiliser la chaîne de référence de la variable properties au lieu de la valeur?

<bean id="handlerFactory" class="com.westfieldgrp.audit.jdklogging.cpm.CPMHandlerFactory"> 
    <property name="schemaName" value="${env.audit.databaseSchema}" /> 
    <property name="bufferSize" value="${env.audit.bufferSize}" /> 
    <property name="threaded" value="${env.audit.threadedAuditHandler}" /> 
    <property name="dataSourceSelector" ref="dataSourceSelector" /> 
</bean> 

bufferSize sur le CPMHandlerFactory est un entier. Spring échoue car il tente de définir la valeur sur '$ {env.audit.bufferSize}' à la place de la valeur réelle du fichier de propriétés.

Maintenant, lorsque je change le nom du fichier de propriétés ou env.audit.bufferSize dans le fichier, Spring se plaint de ne pas trouver la propriété 'env.audit.bufferSize'. Cela me dit qu'il PEUT trouver la propriété, mais au lieu de mettre la valeur à '20', il essaie de la mettre à '$ {env.audit.bufferSize}'. Quelqu'un peut-il expliquer pourquoi Spring pourrait faire cela et ce que je peux faire à ce sujet?

Contenu du fichier de propriétés ci-dessous:

env.audit.databaseSchema=TDB2DATA 
env.audit.dataSourceName=java:comp/env/AuditDataSourceAlias 
env.audit.bufferSize=20 
env.audit.threadedAuditHandler=true 

Merci, Peter

EDIT:

trouvé le problème grâce à Jamestastic ci-dessous. Voici ce qu'il était: Nous avons un fichier de contexte « maître » qui ressemble à ceci:

<import resource="environmentBeans.xml" /> 
<import resource="serviceBeans.xml" /> 
<import resource="auditBeans.xml" /> 

Le « environmentBeans.xml » a le PropertyPlaceholderConfigurer en elle. Le problème était, j'ai ajouté du code qui référencé le contexte 'auditBeans.xml', qui bien sûr n'a pas avoir le configurer. Je l'ai changé pour référencer le contexte «maître» et cela fonctionne très bien.

La clé est de comprendre pourquoi les valeurs ne se substituer à: parce qu'il n'y avait pas de propriété configurateur.

Alors, Merci!

+0

effacer tous les espaces blancs à la fin de la propriété, il peut le causer. –

+0

Ouais, bonne idée et vérifié cela déjà. Merci! – Risser

Répondre

1

Avez-vous pensé à ajouter <context:property-placeholder /> ou une définition de bean PropertyPlaceholderConfigurer à votre contexte Spring?

+0

Errrg! C'était ça. Sorta. Mais cela m'a définitivement mis sur la bonne voie. Je vais modifier l'entrée principale avec des détails. – Risser

Questions connexes