Java 从数据库加载常量并在包含文件中读取它们

Java 从数据库加载常量并在包含文件中读取它们,java,spring,Java,Spring,我有一个存储在数据库表中的常量值列表。我的应用程序的搜索表单是由一个公共包含文件生成的,该文件可以放在站点上的任何JSP页面中。此搜索表单应包括数据库表中的常量。Springbean管理数据库层,我很难找到合适的位置来加载常量。我尝试了以下方法: 使用静态方法加载常量。这种技术的问题是静态方法无法访问用于访问数据库的Springbean 在基本操作类中加载常量。这将导致在每次页面加载时查询数据库中的常量。通过在每个用户的会话中保存结果,我可以稍微降低性能损失,但这并不理想 使用常量创建全局Spr

我有一个存储在数据库表中的常量值列表。我的应用程序的搜索表单是由一个公共包含文件生成的,该文件可以放在站点上的任何JSP页面中。此搜索表单应包括数据库表中的常量。Springbean管理数据库层,我很难找到合适的位置来加载常量。我尝试了以下方法:

  • 使用静态方法加载常量。这种技术的问题是静态方法无法访问用于访问数据库的Springbean
  • 在基本操作类中加载常量。这将导致在每次页面加载时查询数据库中的常量。通过在每个用户的会话中保存结果,我可以稍微降低性能损失,但这并不理想
  • 使用常量创建全局Springbean。但我不知道如何从include文件访问这个全局类

  • 还有其他我忽略的选择吗?我希望能够从include文件中清晰地检索常量。

    您需要的是缓存。所以你可以在案例2中使用一个静态字段。当此字段为
    null
    时,您将获取数据并将其保存在该字段中。问题:当数据库更改时,除非您清除字段或重新启动应用程序,否则字段不会更新

    至于#3,您不能访问全局类,但可以通过名称访问bean,就像访问任何其他bean一样。再一次,你会遇到陈腐的问题

    要解决此问题,请添加第二个包含时间戳(long)的字段。更改字段时,将其设置为
    System.currentTimeMillis()
    加上一天。浏览include文件时,根据当前时间检查时间戳。当它较旧时,再次获取值