Как поменять настройки Hikari Connection Pool

290
12 ноября 2021, 03:40

Суть проблемы: у меня есть файл .properties, в нем лежат все данные необходимые для настройки конекшн пула, также есть конфиг файл который считывает эти настройки передеает их хикари и создает бин, затем этот бин автовайрится в DAOimpl слой

@Autowired
DataSource datasource;
...
Connection conn = datasource.getConnection();

и все работает отлично, НО я пишу тесты для DAOimpl слоя и мне надо для тестов изменить схему, а как это сделать не меняя конфиг файлов, я не знаю. Может кто знает как изменить текущие настройки datasource? config class

    @Configuration
@PropertySource("database.properties")
public class SpringConfig {
    @Value("${db.url}")
    private String dbUrl;
    @Value("${db.username}")
    private String dbUsername;
    @Value("${db.password}")
    private String dbPassword;
    @Value("${db.driver}")
    private String dbDriver;
    @Value("${db.schema}")
    private String dbSchema;
    private int DB_POOL_MAX_SIZE = 5;
    @Bean
    public DataSource dataSource () {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl(dbUrl);
        hikariConfig.setUsername(dbUsername);
        hikariConfig.setPassword(dbPassword);
        hikariConfig.setDriverClassName(dbDriver);
        hikariConfig.setMaximumPoolSize(DB_POOL_MAX_SIZE);
        hikariConfig.setSchema(dbSchema);
        HikariDataSource dataSource = new HikariDataSource(hikariConfig);
        return dataSource;
    }
}
Answer 1

Во-первых, не надо свой бин. СпрингБут умеет конфигурировать Хикари напрямую

Например

spring.datasource.driver-class-name
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=100

Список стандартных свойств spring.datasource можно посмотреть здесь https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#data-properties

Для тестов можно создать src/test/resources/application-test.propperties, перегрузить в нём только те свойства, что отличаются в тестовой среде и запускать тесты с указанием активного профиля. Способы указаны тут https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/htmlsingle/#howto-set-active-spring-profiles

READ ALSO
Создание объекта без ключевого слова new

Создание объекта без ключевого слова new

Если в Java для выделения памяти под новый объект используют ключевое слово new, то почему в данной ситуации, при создании экземпляра класса...

140
lambda expressions

lambda expressions

недавно изучаю лямбды

176
Как из приложения запустить поиск слова в Гугле?

Как из приложения запустить поиск слова в Гугле?

Хочу из контекстного меню осуществить возможность поиска нужного слова в поисковике браузераЧто-бы нажать кнопку, и открылся браузер с результатами...

159
Как сделать JPopupMenu невидимым?

Как сделать JPopupMenu невидимым?

Не получается отключать JPopupMenu методами setVisible() и setEnabled()Отдельные JMenuItem без проблем обрабатываются этими методами, а вот меню целиком никак...

249