我在java bean配置类中设置数据源属性时遇到问题。似乎没有从yaml文件中正确读取属性。当尝试访问驱动程序类名时,我得到一个空指针异常。
这是我的java bean配置文件:
@Configuration
public class AppConfig {
@Autowired
private DataSourceProperties properties;
//other beans here
@Bean
public DataSource dataSource(){
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(properties.getDriverClassName());
dataSource.setJdbcUrl(properties.getUrl());
dataSource.setUsername(properties.getUsername());
dataSource.setPassword(properties.getPassword());
@Bean
public DataSourceProperties properties(){
return new DataSourceProperties();
}
}
我也尝试过:
@Configuration
public class AppConfig {
//other beans here
@Bean
public DataSource dataSource(DataSourceProperties properties){
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(properties.getDriverClassName());
dataSource.setJdbcUrl(properties.getUrl());
dataSource.setUsername(properties.getUsername());
dataSource.setPassword(properties.getPassword());
return dataSource;
}
@Bean
public DataSourceProperties properties(){
return new DataSourceProperties();
}
}
我还尝试使用springframeowrk.jdbc的DriverManagerDataSource而不是Hikari,但它仍然不起作用。
这是我在src / main / resources中的application.yml文件:
spring:
datasource:
driverClassName: 'com.ibm.db2.jcc.DB2Driver'
username: 'appUsername'
password: 'appPw'
url: 'datasourceURL'
有没有人遇到类似的问题,并且知道如何设置正确设置属性?
答案 0 :(得分:1)
在application.yml中配置DataSource时,您不需要额外的Bean。
答案 1 :(得分:1)
我的配置示例:
spring:
datasource:
driverClassName: org.mariadb.jdbc.Driver
url: jdbc:mysql://localhost:3306/db
username: user
password: pass
connectionInitSql: "SET NAMES 'utf8mb4'" # hikari
validationQuery: SELECT 1
type: com.zaxxer.hikari.HikariDataSource
hikari还有其他选项,例如connectionInitSql
。如前所述,不需要自己的配置。