Use Resource[] for database initialization

pull/1/merge
Dave Syer 12 years ago
parent 47f60684e3
commit f5bfc37896

@ -23,7 +23,6 @@ import java.util.concurrent.ExecutorService;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean; import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean;
import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration; import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration;
@ -32,9 +31,7 @@ import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext; import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.task.AsyncUtils; import org.springframework.core.task.AsyncUtils;
import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
@ -62,19 +59,22 @@ public class EmbeddedDatabaseAutoConfiguration {
private ExecutorService executorService; private ExecutorService executorService;
@Autowired // FIXME: DB platform
private ResourceLoader resourceLoader = new DefaultResourceLoader(); @Value("${spring.jdbc.schema:classpath*:schema.sql}")
private Resource[] schemaLocations = new Resource[0];
@Value("${spring.jdbc.schema:classpath:schema.sql}")
private String schemaLocation = "classpath:schema.sql"; // FIXME: DB platform
@PostConstruct @PostConstruct
protected void initialize() throws Exception { protected void initialize() throws Exception {
Resource resource = this.resourceLoader.getResource(this.schemaLocation);
if (resource.exists()) {
ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
boolean exists = false;
for (Resource resource : this.schemaLocations) {
if (resource.exists()) {
exists = true;
populator.addScript(resource); populator.addScript(resource);
populator.setContinueOnError(true); populator.setContinueOnError(true);
}
}
if (exists) {
DatabasePopulatorUtils.execute(populator, dataSource()); DatabasePopulatorUtils.execute(populator, dataSource());
} }
} }

Loading…
Cancel
Save