configuration - Spring Boot 无法读取 Yaml 属性
问题描述
我编写了一个 spring 批处理应用程序,在 src/main/resources 文件夹中配置了数据库连接属性。
作业配置如下:
@Import({DataSourceConfiguration.class})
@Configuration
public class JobConfiguration {
@Autowired
private DataSourceConfiguration dataSourceConfig;
......
}
DataSourceConfiguration 类如下:
@Configuration
@EnableConfigurationProperties(DatabaseConfiguration.class)
public class DataSourceConfiguration {
@Autowired
private DatabaseConfiguration dbConfiguration;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(dbConfiguration.getDriver());
dataSource.setUrl(dbConfiguration.getUrl());
dataSource.setUsername(dbConfiguration.getUser());
dataSource.setPassword(dbConfiguration.getPassword());
return dataSource;
}
}
DatabaseConfiguration 类如下:
@ConfigurationProperties("jdbc")
public class DatabaseConfiguration {
private String driver;
private String url;
private String user;
private String password;
//getter/setter methods
......
}
application.yml 文件如下:
jdbc:
driver: oracle.jdbc.OracleDriver
url: 'jdbc:oracle:thin:@hostname'
user: username
password: password
当我运行 spring 批处理时,异常显示属性不是从 yml 文件中读取的。我已遵循上述配置的文档,但我不知道缺少什么。请阐明这一点。谢谢。
Caused by: java.lang.IllegalArgumentException: Property 'driverClassName'
must not be empty
at org.springframework.util.Assert.hasText(Assert.java:276)
at org.springframework.jdbc.datasource.DriverManagerDataSource.setDriverClassName(DriverManagerDataSource.java:124)
at com.telus.workforcemgmt.batchcloud.configuration.DataSourceConfiguration.dataSource(DataSourceConfiguration.java:28)
at com.telus.workforcemgmt.batchcloud.configuration.DataSourceConfiguration$$EnhancerBySpringCGLIB$$7e128c57.CGLIB$dataSource$4(<generated>)
at com.telus.workforcemgmt.batchcloud.configuration.DataSourceConfiguration$$EnhancerBySpringCGLIB$$7e128c57$$FastClassBySpringCGLIB$$b7fd119a.invoke(<generated>)
解决方案
检查 DatabaseConfiguration.java 中“驱动程序”属性的设置方法名称
是吗?
public void setDriver(String driver) {
this.driver = driver;
}
推荐阅读
- spring-boot - 如何使用 jdbcTemplate 方法测试我的存储库?
- ios - SwiftUI 中 ScrollView 中的多个列表
- angular - Angular MatDialog 显示在页面底部
- javascript - Javascript - 循环中的异步/等待计时器
- ios - Lokalise 返回空值或本地回退值;如何使其与实时更新一起使用?
- javascript - Laravel 8 一对一消息传递,有什么建议吗?
- python - 当我在定义之前询问一个值时,无论它是如何排列的,如何修复名称错误?
- javascript - Apollo UseSubscription Hook 抛出“页面加载时连接中断。” 在控制台中
- excel - 与文本连接时以正确格式显示日期
- python - 在 Docker 容器上实现 Dask 调度程序和工作程序