我正在使用PO2的POC,在application.properties文件中具有以下详细信息:
#datasource
ds.pc.jdbcUrl=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
ds.pc.type=com.zaxxer.hikari.HikariDataSource
ds.pc.driver-class-name=org.h2.Driver
ds.pc.hikari.pool-name=pc-hikari-dbcp
ds.pc.hikari.maximum-pool-size=20
ds.pc.driver-type=thin
ds.pc.validation-query=Select 1 from dual
ds.pc.primary=true
ds.pc.username=sa
ds.pc.password=
spring.h2.console.enabled=true
spring.h2.console.path=/h2
我已经定义了我的bean如下:
@Configuration
public class AppConfig
{
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
{
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public ConversionServiceFactoryBean conversionServiceFactoryBean()
{
return new ConversionServiceFactoryBean();
}
@Primary
@Bean(name = "pcJdbcTemplate")
public NamedParameterJdbcTemplate pCJdbcTemplate()
{
return new NamedParameterJdbcTemplate(pCDataSource());
}
@Primary
@Bean
@ConfigurationProperties(prefix = "ds.pc")
public DataSource pCDataSource()
{
return DataSourceBuilder.create().build();
}
}
它失败,但以下异常:
java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:958) ~[HikariCP-3.4.2.jar:?]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-3.4.2.jar:?]
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
但是当我按如下所示对数据源属性进行硬编码时,它将起作用:
@Primary
@Bean
public DataSource pCDataSource()
{
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("org.h2.Driver");
hikariConfig.setUsername("sa"); hikariConfig.setPassword("");
hikariConfig.setJdbcUrl(
"jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
return new HikariDataSource(hikariConfig);
}
尝试过如下更改属性:
ds.pc.jdbc-url=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
ds.pc.url=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
仍然无法正常工作。
我的application.properties文件中有什么不可读的地方怎么了?
而且我也无法在localhost:8080 / h2上看到h2控制台
问题是我的application.properties文件位于src / main / resources下名为appConfig的文件夹下。
解决方案1:将appConfig重命名为config。
转到第2.3节。 documentation处的应用程序属性文件。它解释了为什么配置文件夹起作用。
解决方案2:将属性文件直接移到src / main / resources下
对不起,我。花了好几个小时才发现事情很简单。