2017-09-03 1 views
0

J'injecte une valeur à une variable avec @Value. Pour une raison quelconque, quand j'ai la valeur par défaut, il l'utilise seulement, il ne la recherche pas dans le fichier de propriétés. Lorsque je n'utilise pas la valeur par défaut, il injecte la valeur du fichier de propriétés. Aucune autre configuration n'a été modifiée.Spring @Value utilise uniquement la valeur par défaut

@Value("${migration.paths:#{'classpath:db/migration'}}") 
private String dbMigrationPaths; 

(J'utilise SPEL la valeur par défaut, car il a des barres obliques)

La configuration du fichier de propriétés:

@Bean 
public static PropertySourcesPlaceholderConfigurer configDataSourcesPropertyFile() { 
     PropertySourcesPlaceholderConfigurer bean = new PropertySourcesPlaceholderConfigurer(); 
     bean.setLocations(new ClassPathResource[]{ 
       new ClassPathResource("/file1"), 
       new ClassPathResource("/file2") 
     }); 
     bean.setIgnoreUnresolvablePlaceholders(true); 
     bean.setIgnoreResourceNotFound(true); 
     return bean; 
    } 

sont deux fichiers de propriétés, et la propriété en question réside dans file1 et non file2

+1

S'il vous plaît jeter un oeil à [cet article] (https://stackoverflow.com/questions/28369582/spring-boot-spring-always-assigns-default-value-to-property-despite-of-it-bein), semble un problème similaire. – juanlumn

Répondre

1

Avez-vous deux espaces réservés de propriété dans votre projet? Si oui, vous pouvez rencontrer ce bug documenté ici: https://jira.spring.io/browse/SPR-9989. Voir à la fin il y a un lien vers la solution de contournement suggérée.

+0

Cela semble être le cas! Belle prise... – apines