如何更改 Spring Social JdbcUsersConnectionRepository table 名称和列名称?

How to change Spring Social JdbcUsersConnectionRepository table name and column names?

我在 spring boot 应用程序中使用 spring 社交身份验证。为了保留社交用户详细信息,我尝试将 mysqlJdbcUsersConnectionRepository.

一起使用

我需要更改默认设置为 prefix + UserConnect 的 table 名称。 table 名称和所有列名称均采用骆驼命名约定。但是在我的应用程序中,数据库列是下划线命名约定。

当我检查 JdbcUsersConnectionRepository 的源代码时,它的硬编码如下

jdbcTemplate.queryForList("select userId from " + tablePrefix + "UserConnection where providerId = ? and provide....

我知道我可以重写 UsersConnectionRepository 实现并执行此操作。这实际上是我现在正在做的。

public class SecUsersConnectionRepository implements UsersConnectionRepository {

    private UserRepository userRepository;
    private UserConnectionRepository userConnectionRepository;
    private ConnectionFactoryLocator connectionFactoryLocator;

.....
.....

但是这样我就不得不在JdbcUsersConnectionRepository中再次重写相同的逻辑。这根本没有生产力。那么实现这一目标的最佳实践是什么?

我希望我不是唯一一个面临 spring 社交问题的人。请分享您如何解决这种情况的知识。

恐怕目前这是不可能的,因为正如您正确指出的那样,它已硬编码在 Spring 代码中。

查看官方回复 Spring forum

如果您不想复制代码,则必须坚持使用 spring 的默认 table 名称。这就是我在项目中所做的。

干杯。