Я использую данные 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).
Спасибо за ваши ответы.
Следуя документации, вы можете программно создавать объекты 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))