我正在开发一个 Spring Boot 应用程序。目前我的一些配置是硬编码的(例如 Hystrix 属性)。
所以我想在我的应用程序启动时间或之后获得这些配置。
是否可以使用 Spring Boot 做到这一点?我的意思是在启动时运行 SQL 脚本并获取数据。
应该如何在我的应用程序中检索和存储属性/配置?
我正在使用 MyBatis 和 Oracle DB。
原文由 Laurynas 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在开发一个 Spring Boot 应用程序。目前我的一些配置是硬编码的(例如 Hystrix 属性)。
所以我想在我的应用程序启动时间或之后获得这些配置。
是否可以使用 Spring Boot 做到这一点?我的意思是在启动时运行 SQL 脚本并获取数据。
应该如何在我的应用程序中检索和存储属性/配置?
我正在使用 MyBatis 和 Oracle DB。
原文由 Laurynas 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果要在启动后从 sql 脚本加载数据,请使用 ResourceDatabasePopulator 类对象,如下所示。
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.io.ClassPathResource;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import javax.sql.DataSource;
@Component
public class InitializeData {
@Autowired
private DataSource dataSource;
@EventListener(ApplicationReadyEvent.class)
public void loadData() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator(false, false, "UTF-8", new ClassPathResource("data.sql"));
resourceDatabasePopulator.execute(dataSource);
}
}
它将轻松地从 sql 文件中加载数据,并且不用担心 sql 文件中的错误 sql 语句,因为它会被忽略。
原文由 pjsagar 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答708 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
默认情况下,Spring-Boot 加载
data.sql
和/或data-${platform}.sql
。但是,请记住,脚本会在每次启动时加载,所以我认为(至少对于生产而言)更有意义(至少对于生产而言),让数据库中已经存在的值,而不是在每次启动时重新插入。 在使用内存数据库时,我个人仅将数据库初始化用于测试/开发目的。 不过,这是 Spring-Boot 提供的功能。
来源: spring-boot-howto-database-initialization :
src/main/resources/ data-oracle.sql:
spring.datasource.platform=oracle
。spring.datasource.data=myscript.sql
。data.sql
,Spring-boot 还加载schema.sql
(在data.sql
之前)。