对比新文件 |
| | |
| | | package com.iailab.framework.test.config; |
| | | |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate; |
| | | import org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties; |
| | | import org.springframework.boot.context.properties.EnableConfigurationProperties; |
| | | import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer; |
| | | import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer; |
| | | import org.springframework.boot.sql.init.DatabaseInitializationSettings; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.context.annotation.Lazy; |
| | | |
| | | import javax.sql.DataSource; |
| | | |
| | | /** |
| | | * SQL 初始化的测试 Configuration |
| | | * |
| | | * 为什么不使用 org.springframework.boot.autoconfigure.sql.init.DataSourceInitializationConfiguration 呢? |
| | | * 因为我们在单元测试会使用 spring.main.lazy-initialization 为 true,开启延迟加载。此时,会导致 DataSourceInitializationConfiguration 初始化 |
| | | * 不过呢,当前类的实现代码,基本是复制 DataSourceInitializationConfiguration 的哈! |
| | | * |
| | | * @author iailab |
| | | */ |
| | | @Configuration(proxyBeanMethods = false) |
| | | @ConditionalOnMissingBean(AbstractScriptDatabaseInitializer.class) |
| | | @ConditionalOnSingleCandidate(DataSource.class) |
| | | @ConditionalOnClass(name = "org.springframework.jdbc.datasource.init.DatabasePopulator") |
| | | @Lazy(value = false) // 禁止延迟加载 |
| | | @EnableConfigurationProperties(SqlInitializationProperties.class) |
| | | public class SqlInitializationTestConfiguration { |
| | | |
| | | @Bean |
| | | public DataSourceScriptDatabaseInitializer dataSourceScriptDatabaseInitializer(DataSource dataSource, |
| | | SqlInitializationProperties initializationProperties) { |
| | | DatabaseInitializationSettings settings = createFrom(initializationProperties); |
| | | return new DataSourceScriptDatabaseInitializer(dataSource, settings); |
| | | } |
| | | |
| | | static DatabaseInitializationSettings createFrom(SqlInitializationProperties properties) { |
| | | DatabaseInitializationSettings settings = new DatabaseInitializationSettings(); |
| | | settings.setSchemaLocations(properties.getSchemaLocations()); |
| | | settings.setDataLocations(properties.getDataLocations()); |
| | | settings.setContinueOnError(properties.isContinueOnError()); |
| | | settings.setSeparator(properties.getSeparator()); |
| | | settings.setEncoding(properties.getEncoding()); |
| | | settings.setMode(properties.getMode()); |
| | | return settings; |
| | | } |
| | | |
| | | } |