如何在部署 java 网络应用程序时缓存数据库数据

How to Cache database data when deploying a java web app

所以我的问题是我想在部署我的应用程序时缓存一些 table 数据。在这种情况下,当应用程序部署在服务器(可能是 jboss 或 tomcat 服务器)时,我想根据一个 table 的数据制作哈希映射。

我知道如何使用 hibernate、JDBC 等,并且正常获取数据没有问题,但是当我在building/deploying申请?

这可能是一件非常简单的事情,但我不确定如何做,而且我似乎找不到任何好的指南。

非常感谢任何帮助。

您可以为此目的从 servlet 构建中调用它。然后,在您的 web.xml 中,将 servlet 设置为 runOnStartup 而不是 0。这会使 Web 服务器在加载应用程序时启动 servlet。

Of the 3 you mentioned above I'm familiar with Spring. Any advice on how I could achieve this with spring?

Spring beans 默认为单例范围,并在初始化 ApplicationContext 时创建(在部署时发生)。您可以要求 Spring 在使用 @PostConstruct 创建 bean 时调用方法,或者通过实现 InitializingBean:

@Component
public class CategoriesCache {
    @Inject
    CategoryRepositoy repo;

    private List<Category> cachedCategories;

    @PostConstruct
    void init() {
        cachedCategories = repo.findAll();
    }
}

如果您不想使用依赖项注入容器,可以使用 ServletContextListener 通知部署,并执行必要的初始化。