java - Spring DataSource:EmbeddedDatabaseBuilder addScript() 抛出 FileNotFoundException
问题描述
我正在使用 Spring-Boot 和内存中的 H2 数据库。我正在尝试使用 DataSource Bean 通过配置类来配置数据库。我希望在应用程序启动时执行一个脚本,该脚本在我的数据库中插入一些行。因此我使用addScript()
. EmbeddedDatabaseBuilder
但我继续收到 FileNotFoundExceptions。
实体是正确的,并且创建了正确的表,我可以使用 h2 控制台进行检查。此外,文件 import.sql 确实存在于正确的文件夹中。Intellij 确实找到了这个文件。
import.sql
文件:
INSERT INTO USER (id, user_name, password, first_name, last_name, email) VALUES
(0,'test','12345','Test','Entry','example@mail.com'),
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("db/sql/import.sql")
.build();
}
}
Caused by: java.io.FileNotFoundException: class path resource [db/sql/import.sql] cannot be opened because it does not exist
我希望在应用程序启动时正确执行 sql 语句。
解决方案
Your files should go in resources folder. The hierarchy should look like this:
src
├───main
│ ├───java
│ │ └───com
│ │ └───YourCode
│ │ │ Application.java
│ │ └───config
│ │ DataSourceConfig.java
│ └───resources
│ └───db
│ └───sql
│ import.sql
└───test
└───java
推荐阅读
- continuous-integration - OWASP ZAP HTTP POST 扫描未使用导入的 URL 执行
- python - 无法控制 api json 格式、文本或视频结果?
- r - 从R studio,tidyverse中将数值与字符分开
- django - Django:无法使用 TemplateView.as_view() 加载管理页面和 HTML 页面
- java - 如何使用java在excel中读取列?
- spring-mvc - 如何从 Liferay 7.1 中的 url 中删除 '/o' 前缀
- html - 如何从值为真的 JSON 中提取键
- cluster-analysis - 了解聚类中的轴
- c# - 使用 IEnumerable 从连接中返回 IQueryable
- spring-boot - 如何使用springboot将所有微服务日志记录在一个日志文件中