我们有一个 Spring Boot 3.2.5 应用程序,它通过 jdbc 调用 SQL DB 来检索映射,然后在操作中使用该映射。我们正在将此应用程序从 Karaf(在 Java 8 上)迁移到 Spring Boot(在 Java 17 上),并且我们发现在测试中 Spring Boot 应用程序不会在不重新启动应用程序的情况下获取数据库中的地图更改。在我们的 Karaf 版本中,地图更改无需重新启动即可生效。 Java 应用程序代码和数据库驱动程序均未更改,仅更改了 Karaf 对 Spring Boot 的依赖关系。
为了清楚起见,我们不希望在 jdbc 连接中进行任何缓存。我们正在尝试关闭导致此缓存行为的任何因素。
我们看到了 Spring Boot JdbcTemplate - 禁用语句缓存? 但这个解决方案并没有影响我们的测试结果(在没有重新启动的情况下,Spring Boot应用程序中的后续操作仍然没有拾取数据库中的映射更改)。
我们尝试了各种 jdbc 池设置,但都没有解决问题。
有人可以指出我们应该寻找的地方吗?不幸的是,我无法在这里发布代码。
谢谢
这被证明是 (IBM Sterling COTS) 地图组件中的默认缓存。在 Fuse 下,缓存由于某种原因(无意)无法工作,当我们迁移到 Spring Boot 时,缓存开始工作,破坏了我们的一些测试用例。我们刚刚将 IBM 缓存配置为在很短的时间内过期,这满足了我们的测试用例。