зашифровать параметр на сервере sql и данные sprig 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, есть ли способ установить этот параметр с помощью этого класса (MssqlConnectionFactory и MssqlConnectionConfiguration).

Спасибо за ваши ответы.


person chavalife17    schedule 18.12.2020    source источник


Ответы (1)


Следуя документации, вы можете программно создавать объекты ConnectionFactory и Connection.

@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))
person zforgo    schedule 18.12.2020