Skip to content

Commit 4b79d52

Browse files
committed
Merge {Test,Prod}DataSource into DataSourceConfig.
No functional changes.
1 parent b7622fc commit 4b79d52

File tree

4 files changed

+47
-63
lines changed

4 files changed

+47
-63
lines changed

src/main/java/ru/mystamps/web/config/ProdDataSource.java renamed to src/main/java/ru/mystamps/web/config/DataSourceConfig.java

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,48 @@
2727
import org.springframework.context.annotation.Profile;
2828
import org.springframework.context.annotation.PropertySource;
2929
import org.springframework.core.env.Environment;
30+
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
31+
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
3032

3133
@Configuration
32-
@Profile("prod")
33-
@PropertySource("classpath:prod/spring/database.properties")
34-
public class ProdDataSource {
34+
public interface DataSourceConfig {
3535

36-
@Inject
37-
private Environment env;
36+
DataSource getDataSource();
3837

39-
@Bean(destroyMethod = "close")
40-
public DataSource getDataSource() {
41-
BasicDataSource dataSource = new BasicDataSource();
38+
@Profile("prod")
39+
@PropertySource("classpath:prod/spring/database.properties")
40+
class ProdDataSourceConfig implements DataSourceConfig {
4241

43-
dataSource.setDriverClassName(env.getRequiredProperty("db.driverClassName"));
44-
dataSource.setUrl(env.getRequiredProperty("db.url"));
45-
dataSource.setUsername(env.getRequiredProperty("db.username"));
46-
dataSource.setPassword(env.getRequiredProperty("db.password"));
42+
@Inject
43+
private Environment env;
44+
45+
@Bean(destroyMethod = "close")
46+
@Override
47+
public DataSource getDataSource() {
48+
BasicDataSource dataSource = new BasicDataSource();
49+
50+
dataSource.setDriverClassName(env.getRequiredProperty("db.driverClassName"));
51+
dataSource.setUrl(env.getRequiredProperty("db.url"));
52+
dataSource.setUsername(env.getRequiredProperty("db.username"));
53+
dataSource.setPassword(env.getRequiredProperty("db.password"));
54+
55+
return dataSource;
56+
}
57+
58+
}
59+
60+
@Profile("test")
61+
class TestDataSourceConfig implements DataSourceConfig {
62+
63+
@Bean(destroyMethod = "shutdown")
64+
@Override
65+
public DataSource getDataSource() {
66+
return new EmbeddedDatabaseBuilder()
67+
.setType(EmbeddedDatabaseType.H2)
68+
.setName("mystamps")
69+
.build();
70+
}
4771

48-
return dataSource;
4972
}
5073

5174
}

src/main/java/ru/mystamps/web/config/DbConfig.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.Map;
2222

2323
import javax.inject.Inject;
24-
import javax.sql.DataSource;
2524

2625
import org.springframework.context.annotation.Bean;
2726
import org.springframework.context.annotation.Configuration;
@@ -42,17 +41,14 @@
4241
@EnableTransactionManagement
4342
@EnableJpaRepositories("ru.mystamps.web.dao")
4443
@PropertySource("classpath:${spring.profiles.active}/spring/database.properties")
45-
@Import({
46-
TestDataSource.class,
47-
ProdDataSource.class
48-
})
44+
@Import(DataSourceConfig.class)
4945
public class DbConfig {
5046

5147
@Inject
5248
private Environment env;
5349

5450
@Inject
55-
private DataSource dataSource;
51+
private DataSourceConfig dataSourceConfig;
5652

5753
@Bean
5854
public JpaVendorAdapter getJpaVendorAdapter() {
@@ -73,7 +69,7 @@ public LocalContainerEntityManagerFactoryBean getEntityManagerFactory() {
7369
new LocalContainerEntityManagerFactoryBean();
7470

7571
entityManagerFactory.setJpaVendorAdapter(getJpaVendorAdapter());
76-
entityManagerFactory.setDataSource(dataSource);
72+
entityManagerFactory.setDataSource(dataSourceConfig.getDataSource());
7773
entityManagerFactory.setJpaPropertyMap(getJpaProperties());
7874

7975
return entityManagerFactory;

src/main/java/ru/mystamps/web/config/LiquibaseConfig.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package ru.mystamps.web.config;
1919

2020
import javax.inject.Inject;
21-
import javax.sql.DataSource;
2221

2322
import org.springframework.context.annotation.Bean;
2423
import org.springframework.context.annotation.Configuration;
@@ -29,11 +28,17 @@
2928
@Configuration
3029
public class LiquibaseConfig {
3130

31+
@Inject
32+
private Environment env;
33+
34+
@Inject
35+
private DataSourceConfig dataSourceConfig;
36+
3237
@Inject
3338
@Bean(name = "liquibase")
34-
public SpringLiquibase getSpringLiquibase(DataSource dataSource, Environment env) {
39+
public SpringLiquibase getSpringLiquibase() {
3540
SpringLiquibase liquibase = new SpringLiquibase();
36-
liquibase.setDataSource(dataSource);
41+
liquibase.setDataSource(dataSourceConfig.getDataSource());
3742
liquibase.setChangeLog("classpath:/liquibase/changelog.xml");
3843
liquibase.setContexts(getActiveContexts(env));
3944
return liquibase;

src/main/java/ru/mystamps/web/config/TestDataSource.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)