java - 获取 Spring Security ACL 查找以使用 mysql 只读副本

标签 java mysql spring spring-security

在使用 Spring 应用程序调试和测试 MySql 读取复制时,我注意到获取 ACL 的查询正在访问我的主数据库,而不是从数据库。我正在使用 jdbc:mysql:replication:// 连接字符串。对于非 ACL 数据,这似乎适用于封装在 @Transactional(readOnly = true) 中的调用。

我使用与 JPA 配置相同的数据源通过 BasicLookupStrategy 设置 LookupStrategy。

这就好像 LookupStrategy 没有将连接标记为只读。

这正常吗?有什么办法可以改变这种行为吗?

最佳答案

Spring Security 3.0 提供了一个 BasicLookupStrategy 类,该类在其构造函数中允许注入(inject)用于访问数据库的 DataSource。所以我的建议是使用该实现,并实现 ACLCache 以避免不必要的数据库访问。

https://docs.spring.io/spring-security/site/apidocs/org/springframework/security/acls/jdbc/BasicLookupStrategy.html

关于java - 获取 Spring Security ACL 查找以使用 mysql 只读副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025718/

相关文章:

java - 使用哈希表代替数据库系统

java - 如何从 BCryptPasswordEncoder 获取原始密码

java - 从 Gradle、Spring 和 DB2 开始的挑战

java - 如何使用 Java 将数据保存到 Firebase(桌面)

java - Java 中的转换性能

java - 二维数组未按预期填充

mysql - 如何在不询问MySQL的情况下检查MySQL表是否存在

javascript - Phonegap应用程序无法连接到移动设备上的数据库

MySQL - SUM() 旧条目

java - 获取存款的所有者(JPA 存储库)