如何更改 Spring Social JdbcUsersConnectionRepository table 名称和列名称?
How to change Spring Social JdbcUsersConnectionRepository table name and column names?
我在 spring boot 应用程序中使用 spring 社交身份验证。为了保留社交用户详细信息,我尝试将 mysql 与 JdbcUsersConnectionRepository
.
一起使用
我需要更改默认设置为 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 名称。这就是我在项目中所做的。
干杯。
我在 spring boot 应用程序中使用 spring 社交身份验证。为了保留社交用户详细信息,我尝试将 mysql 与 JdbcUsersConnectionRepository
.
我需要更改默认设置为 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 名称。这就是我在项目中所做的。
干杯。