Сценарий запуска веб-приложения Java (Jsp / сервлеты)

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

<servlet>
    <servlet-name>CacheData</servlet-name>
    <servlet-class>com.my.webapp.CacheDataServletExample</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

Поскольку в методе инициализации мне нужно вызывать операции db и кешировать их. Кроме того, если есть лучшее решение, пожалуйста, дайте мне знать.

заранее спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
297
1

Ответы 1

вы можете зарегистрировать прослушиватель контекста при запуске в web.xml, например:

<listener>
    <listener-class>it.example.WebAppServletContextListener</listener-class>
</listener>

и вы можете обрабатывать все свои вещи в реализации слушателя:

package it.example;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class WebAppServletContextListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // stuff to do on context destroy
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // stuff todo at context startup
    }
 }

P.S. начиная с сервлета 3.0 вы также можете использовать аннотацию @WebListener вместо объявления слушателей в web.xml

Другие вопросы по теме