Skip to content

Commit 6456f2a

Browse files
author
Dave Syer
committed
Add url,user,password to LiquibaseProperties
User can set those properties (optionally) to use a different DataSource than the default. Fixes gh-1558
1 parent 7828f2a commit 6456f2a

File tree

3 files changed

+55
-1
lines changed

3 files changed

+55
-1
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3232
import org.springframework.boot.autoconfigure.data.jpa.EntityManagerFactoryDependsOnPostProcessor;
3333
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
34+
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
3435
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3536
import org.springframework.context.annotation.Bean;
3637
import org.springframework.context.annotation.Configuration;
@@ -88,12 +89,21 @@ public SpringLiquibase liquibase() {
8889
SpringLiquibase liquibase = new SpringLiquibase();
8990
liquibase.setChangeLog(this.properties.getChangeLog());
9091
liquibase.setContexts(this.properties.getContexts());
91-
liquibase.setDataSource(this.dataSource);
92+
liquibase.setDataSource(getDataSource());
9293
liquibase.setDefaultSchema(this.properties.getDefaultSchema());
9394
liquibase.setDropFirst(this.properties.isDropFirst());
9495
liquibase.setShouldRun(this.properties.isEnabled());
9596
return liquibase;
9697
}
98+
99+
private DataSource getDataSource() {
100+
if (this.properties.getUrl() == null) {
101+
return this.dataSource;
102+
}
103+
return DataSourceBuilder.create().url(this.properties.getUrl())
104+
.username(this.properties.getUser())
105+
.password(this.properties.getPassword()).build();
106+
}
97107
}
98108

99109
/**

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ public class LiquibaseProperties {
4444

4545
private boolean enabled = true;
4646

47+
private String user;
48+
49+
private String password;
50+
51+
private String url;
52+
4753
public String getChangeLog() {
4854
return this.changeLog;
4955
}
@@ -91,4 +97,29 @@ public boolean isEnabled() {
9197
public void setEnabled(boolean enabled) {
9298
this.enabled = enabled;
9399
}
100+
101+
public String getUser() {
102+
return this.user;
103+
}
104+
105+
public void setUser(String user) {
106+
this.user = user;
107+
}
108+
109+
public String getPassword() {
110+
return this.password;
111+
}
112+
113+
public void setPassword(String password) {
114+
this.password = password;
115+
}
116+
117+
public String getUrl() {
118+
return this.url;
119+
}
120+
121+
public void setUrl(String url) {
122+
this.url = url;
123+
}
124+
94125
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,19 @@ public void testOverrideDropFirst() throws Exception {
129129
assertTrue(liquibase.isDropFirst());
130130
}
131131

132+
@Test
133+
public void testOverrideDataSource() throws Exception {
134+
EnvironmentTestUtils.addEnvironment(this.context,
135+
"liquibase.url:jdbc:hsqldb:mem:liquibase", "liquibase.user:sa");
136+
this.context.register(EmbeddedDataSourceConfiguration.class,
137+
LiquibaseAutoConfiguration.class,
138+
PropertyPlaceholderAutoConfiguration.class);
139+
this.context.refresh();
140+
SpringLiquibase liquibase = this.context.getBean(SpringLiquibase.class);
141+
assertEquals("jdbc:hsqldb:mem:liquibase", liquibase.getDataSource()
142+
.getConnection().getMetaData().getURL());
143+
}
144+
132145
@Test(expected = BeanCreationException.class)
133146
public void testChangeLogDoesNotExist() throws Exception {
134147
EnvironmentTestUtils.addEnvironment(this.context,

0 commit comments

Comments
 (0)