在 sql 服务器和 sprig 数据 r2dbc 中加密参数

encrypt parameter in sql server and sprig data r2dbc

我正在使用 Spring 数据 R2DBC,我可以使用以下代码在本地主机中连接我的项目和我的数据库:

public class R2dbcConfig extends AbstractR2dbcConfiguration {

    private final ApplicationDatabaseProperties applicationDatabaseProperties;

    @Bean
    @Override
    public ConnectionFactory connectionFactory() {
        return new MssqlConnectionFactory(
                MssqlConnectionConfiguration.builder()
                        .host(applicationDatabaseProperties.getHost())
                        .port(applicationDatabaseProperties.getPort())
                        .username(applicationDatabaseProperties.getUsername())
                        .password(applicationDatabaseProperties.getPassword())
                        .database(applicationDatabaseProperties.getDatabase())
                        .build());
    }

    @Bean
    public DatabaseClient databaseClient(ConnectionFactory connectionFactory) {
        return DatabaseClient.create(connectionFactory);
    }
}

很明显,applicationDatabaseProperties 具有数据库连接参数,但在其他环境中,我有这样的连接字符串: jdbc:sqlserver://[myhost]:1433;database=[mydatabase];user=[myUser];password={your_password_here};encrypt=true;trustServerCertificate=false;hostNameInCertificate=[myhostNameInCertificate];loginTimeout=30;

我使用了 MssqlConnectionFactory (mssql),我可以查看主机、端口、数据库、用户和密码,但我无法将加密参数设置为 true,有没有办法使用它来设置此参数class(MssqlConnectionFactory 和 MssqlConnectionConfiguration)。

感谢您的回答。

按照文档,您可以通过编程方式创建 ConnectionFactoryConnection 对象。

@Bean
@Override
public ConnectionFactory connectionFactory() {

    final ConnectionFactoryOptions options = builder()
            .option(DRIVER, "sqlserver")
            .option(HOST, applicationDatabaseProperties.getHost())
            .option(PORT, applicationDatabaseProperties.getPort())
            .option(USER, applicationDatabaseProperties.getUsername())
            .option(PASSWORD, applicationDatabaseProperties.getPassword())
            .option(DATABASE, applicationDatabaseProperties.getDatabase())
            .option(Option.valueOf("[ANOTHER_OPTION]","[ANOTHER_VALUE"))
            .build();

    return ConnectionFactories.get(options);
}

在这种情况下,您可以放置​​您需要的任何其他参数,例如:

            .option(Option.valueOf("encrypt", Boolean.TRUE))