Spring Boot - injecter de la carte à partir du fichier de propriétés
propriété de fichier ressemble à ceci:
url1=path_to_binary1
url2=path_to_binary2
Selon cette j'ai essayé approche suivante:
@Component
@EnableConfigurationProperties
public class ApplicationProperties {
private Map<String, String> pathMapper;
//get and set
}
et dans un autre composant que j'autocâblés ApplicationProperties:
@Autowired
private ApplicationProperties properties;
//inside some method:
properties.getPathMapper().get(appName);
produit NullPointerException
.
Comment le corriger?
mise à jour
J'ai corriger selon user7757360 conseils:
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix="app")
public class ApplicationProperties {
et les propriétés de fichier:
app.url1=path_to_binary1
app.url2=path_to_binary2
Ne fonctionne toujours pas
Mise à jour 2
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix="app")
public class ApplicationProperties {
private Map<String, String> app;
et à l'intérieur de application.properties
:
app.url1=path_to_binary1
app.url2=path_to_binary2
Ne fonctionne toujours pas
Vous devez vous connecter pour publier un commentaire.
NullPointerException
est probablement de videApplicationProperties
.Toutes les propriétés personnalisées doivent être annotées
@ConfigurationProperties(prefix="custom")
.Après cela, sur votre classe principale (classe principale méthode), vous devez ajouter
@EnableConfigurationProperties(CustomProperties.class)
.Pour la saisie semi-automatique vous pouvez utiliser:
Si vous utilisez
@ConfigurationProperties
sans préfixe que vous utilisez uniquement un nom de champ. Nom du champ dans vous properites. Dans votre caspath-mapper
, la prochaine, vous spécifiquekey
etvalue
. Exemple:Rappelez-vous, après que des modifications dans votre propre properites vous devez recharger l'application. Exemple:
https://github.com/kchrusciel/SpringPropertiesExample
il serait utile si vous pouvez donner un exemple plus spécifique pour le fichier de propriétés. Vous devriez avoir le même préfixe dans le url1 et url2 et puis vous pouvez utiliser
@ConfigurationProperties(prefix="my")
comme dans
my.pathMapper.url1=path_to_binary1
my.pathMapper.url2=path_to_binary2
voir plus à https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-loading-yaml
app.app.url1=path_to_binary1 app.app.url2=path_to_binary2
je recommande d'utiliser un préfixe différentapplication.properties
donc il n'est pas nécessaire d'écrire les propriétés de nom de fichier n'importe où. Assurez-vous justeapplication.properties
est danssrc/main/resources
comme illustré dans l'exemple fourni par @kchruscielAvoir le votre.fichier de propriétés sous
src/main/resources
et soit de les avoir comme unou pour l'avoir comme
PropertyPlaceholderConfigurer
dans votre PrintempsyourApplicationContext.xml
.Ensuite utiliser la propriété à des valeurs comme la
Il y a deux choses que vous devez alimentation de la carte à partir du fichier de propriétés. Vous devez d'abord avoir une classe qui a la configuration et les champs de cibles pour contenir des données depuis un fichier de propriétés.
Ensuite définir les propriétés de fichier nommé myprops.propriétés avec toutes les propriétés que les accessoires