Зашифровать параметр на сервере 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).

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

Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Что такое управление транзакциями JDBC и как оно используется для поддержания согласованности данных?
Управление транзакциями JDBC - это мощная функция, которая позволяет рассматривать группу операций с базой данных как единую единицу работы. Оно...
Выполнение HTTP-запроса с помощью Spring WebClient: GET
Выполнение HTTP-запроса с помощью Spring WebClient: GET
WebClient - это реактивный веб-клиент, представленный в Spring 5. Это реактивное, неблокирующее решение, работающее по протоколу HTTP/1.1.
Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
0
0
418
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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))

Другие вопросы по теме