Пишу приложение сразу на нескольких языках (ru & en) из расчёта на один домен. Язык определяю в контроллере следующим образом:
IndexPage pIndex;
if(principal==null) {
lang = request.getLocale().getISO3Language();
if (lang!=null && !lang.isBlank()) {
switch (lang) {
case "eng" : pIndex = new IndexPage(lang); break;
case "rus" : pIndex = new IndexPage(lang); break;
default : pIndex = new IndexPage("eng");
}
.....
Класс
IndexPage имеет приблизительно следующий порядок:
public class IndexPage {
private static final HashMap <String, String> listDataRu;
private static final HashMap <String, String> listDataEn;
static {
Tools tools = new Tools();
String ru = tools.readSysFile("config-ru.dat");
String en = tools.readSysFile("config-en.dat");
listDataRu = setMap(ru);
listDataEn = setMap(en);
}
public String title;
public String h2title;
public String metaDescription;
public String buttonAdd;
public String listCountry;
public IndexPage(String lang) {
this.title = setData("title", lang);
this.h2title = setData("h2title", lang);
this.metaDescription = setData("metaDescription", lang);
this.buttonAdd = setData("buttonAdd", lang);
this.listCountry = setData("listCountry", lang);
}
Поля содержащие короткие выражения, такие как title, buttonAdd и т.п. хранятся в HashMap. А поле
listCountry
при каждом обращении заполняется с файла. В контроллере объект IndexPage добавляется в атрибут Model
model.addAttribute("IndexPage", pIndex);
и выводится на странице html
<title th:text="${IndexPage.title}"></title>
средствами Thymeleaf.
Вопрос: Как Spring будет хранить считываемые данные с файла, которые при каждом вызове пишутся в поле listCountry? Будет ли это нагружать приложение?