package cn.hellohao; import cn.hellohao.dao.KeysMapper; import cn.hellohao.utils.FirstRun; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.support.DatabaseStartupValidator; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.util.unit.DataSize; import javax.servlet.MultipartConfigElement; import javax.sql.DataSource; import java.util.stream.Stream; @SpringBootApplication @Configuration @EnableScheduling @ServletComponentScan @EnableTransactionManagement(proxyTargetClass = true) public class TbedApplication { public static void main(String[] args) { SpringApplication.run(TbedApplication.class, args); } //延缓Spring Boot启动时间直到数据库启动的方法 @Bean public DatabaseStartupValidator databaseStartupValidator(DataSource dataSource) { DatabaseStartupValidator databaseStartupValidator = new DatabaseStartupValidator(); databaseStartupValidator.setDataSource(dataSource); databaseStartupValidator.setValidationQuery(DatabaseDriver.POSTGRESQL.getValidationQuery()); return databaseStartupValidator; } @Bean public static BeanFactoryPostProcessor dependsOnPostProcessor() { return bf -> { // Let beans that need the database depend on the DatabaseStartupValidator // like the JPA EntityManagerFactory or Flyway String[] flyway = bf.getBeanNamesForType(FirstRun.class); Stream.of(flyway) .map(bf::getBeanDefinition) .forEach(it -> it.setDependsOn("databaseStartupValidator")); String[] jpa = bf.getBeanNamesForType(KeysMapper.class); Stream.of(jpa) .map(bf::getBeanDefinition) .forEach(it -> it.setDependsOn("databaseStartupValidator")); }; } /** * 文件上传配置 * @return */ @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // 单个数据大小 factory.setMaxFileSize(DataSize.parse("102400KB")); // KB,MB /// 总上传数据大小 return factory.createMultipartConfig(); } }