Вот уже несколько месяцев последние два проекта делаю с использованием Spring Boot.
Бывает так, что нужно интегрироваться с внешней системой, но эта система не готова по каким-то причинам, а нужно показать свой функционал, в этом случае пишем заглушку. Т.к. в моем случае внешний сервис давал данные в формате JSON, я решил положить пример ответа сервиса в ресурсы (resource) по пути files/cities.json.
Далее встал вопрос как его вытянуть. Погуглил, в итоге собрал такую функцию (сперва получаем контекст приложения, из которого получаем ресурс):
private static String getFileContent(String filePath) throws IOException {
ApplicationContext appContext =
new ClassPathXmlApplicationContext(new String[] {});
Resource resource = appContext.getResource(filePath);
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try{
br = new BufferedReader(
new InputStreamReader(resource.getInputStream(), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
}finally {
if(br != null) try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Пример вызова функции:
try {
String text = getFileContent("files/cities.json");
} catch (IOException e) {
e.printStackTrace();
}
Я использовал чтение файла для временной заглушки, но можно использовать и для других целей.
p.s. Обратите внимание, что в функции указана кодировка UTF-8. Можно её не указывать, тогда возьмется кодировка системы. Кодировку можно указать и при запуске приложения:
java -Dfile.encoding=UTF8
Совет: лучше в функции явно прописать UTF-8, если, конечно, она вам нужна.