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 {
...
}
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
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.
J'ai créé le cours suivant
@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
@Autowired
private ConfigUtility configUtil;
public AppResponse getDetails() {
AppResponse response = new AppResponse();
String email = configUtil.getProperty("emailid");
return response;
}
unité testée, fonctionnant comme prévu ...