web-dev-qa-db-fra.com

Comment lire les données depuis Java avec Spring Boot

J'ai une application de démarrage de printemps et je veux lire une variable de mon application.properties fichier. En fait, les codes ci-dessous le font. Mais je pense qu’il existe une bonne méthode pour cette alternative.

Properties prop = new Properties();
InputStream input = null;

try {
    input = new FileInputStream("config.properties");
    prop.load(input);
    gMapReportUrl = prop.getProperty("gMapReportUrl");
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    ...
}
18
Arif Acar

Vous pouvez utiliser @PropertySource pour externaliser votre configuration dans un fichier de propriétés. Il y a plusieurs façons d'obtenir des propriétés:

1. Attribuez les valeurs de propriété aux champs en utilisant @Value avec PropertySourcesPlaceholderConfigurer pour résoudre ${} dans @Value:

@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {

    @Value("${gMapReportUrl}")
    private String gMapReportUrl;

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

2. Obtenir les valeurs de propriété en utilisant Environment:

@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {

    @Autowired
    private Environment env;

    public void foo() {
        env.getProperty("gMapReportUrl");
    }

}

J'espère que cela peut aider

31
Wilson

je suggérerais la manière suivante:

@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties")
@Controller
public class ClassA {
    @Value("${myName}")
    private String name;

    @RequestMapping(value = "/xyz")
    @ResponseBody
    public void getName(){
        System.out.println(name);
    }
}

Ici, votre nouveau nom de fichier de propriétés est "otherprops.properties" et le nom de propriété est "myName". Il s’agit de l’implémentation la plus simple pour accéder au fichier de propriétés dans la version de démarrage printanière 1.5.8.

9
Sam

J'ai créé le cours suivant

ConfigUtility.Java

@Configuration
public class ConfigUtility {

    @Autowired
    private Environment env;

    public String getProperty(String pPropertyKey) {
        return env.getProperty(pPropertyKey);
    }
} 

et appelé comme suit pour obtenir la valeur application.properties

myclass.Java

@Autowired
private ConfigUtility configUtil;

public AppResponse getDetails() {

  AppResponse response = new AppResponse();
    String email = configUtil.getProperty("emailid");
    return response;        
}

application.properties

[email protected]

unité testée, fonctionnant comme prévu ...

5
Sunny