Skip to content

Commit 2b1dd5f

Browse files
committed
Enable overriding configuration by org.seasar.doma.jdbc.Config
fixes #9
1 parent 61d4fad commit 2b1dd5f

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

doma-spring-boot-autoconfigure/src/main/java/org/seasar/doma/boot/autoconfigure/DomaAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public DomaConfigBuilder domaConfigBuilder() {
8080
}
8181

8282
@Bean
83-
@ConditionalOnMissingBean
83+
@ConditionalOnMissingBean(Config.class)
8484
@ConfigurationProperties(prefix = DOMA_PREFIX)
8585
public DomaConfig config(DataSource dataSource, Dialect dialect,
8686
SqlFileRepository sqlFileRepository, Naming naming,

doma-spring-boot-autoconfigure/src/test/java/org/seasar/doma/boot/autoconfigure/DomaAutoConfigurationTest.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
import org.junit.Before;
2020
import org.junit.Test;
2121
import org.seasar.doma.jdbc.*;
22+
import org.seasar.doma.jdbc.dialect.Dialect;
2223
import org.seasar.doma.jdbc.dialect.MysqlDialect;
24+
import org.seasar.doma.jdbc.dialect.PostgresDialect;
2325
import org.seasar.doma.jdbc.dialect.StandardDialect;
2426
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
2527
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
2628
import org.springframework.context.annotation.Bean;
2729
import org.springframework.context.annotation.Configuration;
2830
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
2931

32+
import javax.sql.DataSource;
33+
3034
import static org.junit.Assert.*;
3135
import static org.hamcrest.CoreMatchers.*;
3236

@@ -70,6 +74,22 @@ public void testConfigWithDomaConfigBuilder() {
7074
assertThat(config.getJdbcLogger(), is(instanceOf(UtilLoggingJdbcLogger.class)));
7175
}
7276

77+
@Test
78+
public void testConfigWithConfig() {
79+
this.context.register(ConfigConfigure.class, DomaAutoConfiguration.class,
80+
DataSourceAutoConfiguration.class);
81+
this.context.refresh();
82+
Config config = this.context.getBean(Config.class);
83+
assertThat(config, is(notNullValue()));
84+
assertThat(config.getDataSource(),
85+
is(instanceOf(TransactionAwareDataSourceProxy.class)));
86+
assertThat(config.getDialect(), is(instanceOf(PostgresDialect.class)));
87+
assertThat(config.getSqlFileRepository(),
88+
is(instanceOf(NoCacheSqlFileRepository.class)));
89+
assertThat(config.getNaming(), is(Naming.SNAKE_LOWER_CASE));
90+
assertThat(config.getJdbcLogger(), is(instanceOf(UtilLoggingJdbcLogger.class)));
91+
}
92+
7393
@After
7494
public void tearDown() {
7595
if (this.context != null) {
@@ -86,4 +106,33 @@ DomaConfigBuilder myDomaConfigBuilder() {
86106
.naming(Naming.SNAKE_UPPER_CASE);
87107
}
88108
}
109+
110+
@Configuration
111+
public static class ConfigConfigure {
112+
@Bean
113+
Config myConfig(DataSource dataSource) {
114+
return new Config() {
115+
@Override
116+
public DataSource getDataSource() {
117+
return new TransactionAwareDataSourceProxy(dataSource);
118+
}
119+
120+
@Override
121+
public Dialect getDialect() {
122+
return new PostgresDialect();
123+
}
124+
125+
@Override
126+
public SqlFileRepository getSqlFileRepository() {
127+
return new NoCacheSqlFileRepository();
128+
}
129+
130+
@Override
131+
public Naming getNaming() {
132+
return Naming.SNAKE_LOWER_CASE;
133+
}
134+
};
135+
}
136+
}
137+
89138
}

0 commit comments

Comments
 (0)