Printemps @Valeur de l'annotation de ne pas utiliser les valeurs par défaut de la propriété n'est pas présent

Je suis en train d'utiliser @Valeur de l'annotation dans les paramètres d'un constructeur comme suit:

@Autowired
public StringEncryptor(
    @Value("${encryptor.password:\"\"}") String password,
    @Value("${encryptor.algorithm:\"PBEWithMD5AndTripleDES\"}") String algorithm,
    @Value("${encryptor.poolSize:10}") Integer poolSize, 
    @Value("${encryptor.salt:\"\"}") String salt) {
...
}

Lorsque le fichier de propriétés est présent sur le chemin de la classe, les propriétés sont chargés parfaitement et le test s'exécute bien. Cependant lorsque je l'ai supprimer le fichier de propriétés du chemin de classe, je me serais attendu, les valeurs par défaut ont été utilisés, par exemple poolSize serait fixé à 10 ou un algorithme pour PBEWithMD5AndTripleDES cependant, ce n'est pas le cas.

L'exécution du code par le biais d'un débogueur (qui ne fonctionnerait qu'après un changement de @Value("${encryptor.poolSize:10}") Integer poolSize à @Value("${encryptor.poolSize:10}") String poolSize comme il était à l'origine NumberFormatExceptions) je trouve que les valeurs par défaut ne sont pas définies et les paramètres sont dans la forme de:

poolSize = ${encryptor.poolSize:10} ou

algorithm = ${encryptor.algorithm:"PBEWithMD5AndTripleDES"}

plutôt que de l'attendre

poolSize = 10 ou

algorithm = "PBEWithMD5AndTripleDES"

Basé sur SPR-4785 la notation de la forme ${mon.propriété:myDefaultValue} devrait fonctionner. Pourtant, il ne se passe pas pour moi!

Merci

InformationsquelleAutor garyj | 2011-01-15