Суть проблемы: у меня есть файл .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;
}
}
Во-первых, не надо свой бин. СпрингБут умеет конфигурировать Хикари напрямую
Например
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Если в Java для выделения памяти под новый объект используют ключевое слово new, то почему в данной ситуации, при создании экземпляра класса...
Хочу из контекстного меню осуществить возможность поиска нужного слова в поисковике браузераЧто-бы нажать кнопку, и открылся браузер с результатами...
Не получается отключать JPopupMenu методами setVisible() и setEnabled()Отдельные JMenuItem без проблем обрабатываются этими методами, а вот меню целиком никак...