2015-11-21 2 views
-2

У меня есть модуль интернационализации и приложение работает в двух разных режимах. Чтобы изменить режим, нам необходимо перезапустить сервер tomcat. Режим 1 поддерживает два языка, а режим 2 поддерживает 5 языков. Языки хранятся в файле .json.Spring MVC 3.x Настройка глобальных данных

Каждый раз, когда пользователь нажимает index.html, в @RequestMapping этой странице я проверяю режим приложения. И на основе этого режима приложения я прочитал правильный файл .json. Извлеките список языков и установите это в модели, а затем я верну страницу клиенту.

Проблемы с этим подходом - каждый раз, когда я попадаю в файл index.html, приложение считывает файл с диска. который не только лишний, но и требует много времени, и он вызывает раздражающий звонок моему эго разработчика.

То, что я хотел бы иметь, - это когда приложение загружается, я знаю режим приложения.

Как получить весенний MVC для чтения файла в начале и хранить эти данные до тех пор, пока сервер работает? Возможно ли это?

Если да, можете ли вы сообщить мне, какие части Spring MVC мне нужно изучить?

Я читал около HandlerInterceptor и @ModelAttribute, но в нем просто указывается, как я могу вставлять данные в каждый запрос. Тем не менее, я действительно хочу знать, как сохранить данные, прочитанные из файла один раз.

ответ

0

Одним из подходов может быть использование bean-компонента, которое impements InitializingBean и загружает файл в метод afterPropertiesSet. Он также будет иметь способ вернуть список языков, и он может быть подключен ко всем другим компонентам, которые в этом нуждаются. Вы также можете сделать это в «HandlerInterceptor», просто попросите его реализовать InitializingBean и сохраните список в переменной класса.

например.

public MyInterceptor extends HandlerInterceptorAdaptor implements InitializingBean { 
    private List<String> languageList; 

    @Override 
    void postHandle(HttpServletRequest request, 
       HttpServletResponse response, 
       Object handler, 
       ModelAndView modelAndView) 
     throws Exception { 

     //set list in the model 
    } 

    @Override 
    public void afterPropetiesSet() { 
     languageList=...; //read file 
    } 
} 
Смежные вопросы