Java 配置数据源属性

Java 配置数据源属性,java,spring,datasource,Java,Spring,Datasource,在JavaBean配置类中设置数据源属性时遇到问题。似乎没有从yaml文件正确读取属性。当试图访问驱动程序类名时,我收到一个空指针异常 这是我的java bean配置文件: @Configuration public class AppConfig { @Autowired private DataSourceProperties properties; //other beans here @Bean public DataSource dataS

在JavaBean配置类中设置数据源属性时遇到问题。似乎没有从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的DriverManager数据源代替Hikari,但仍然无法工作

这是src/main/resources中的my application.yml文件:

spring:
    datasource:
        driverClassName: 'com.ibm.db2.jcc.DB2Driver'
        username: 'appUsername'
        password: 'appPw'
        url: 'datasourceURL'      

是否有人遇到过类似的问题,并且知道如何正确设置属性?

在应用程序中配置数据源时不需要额外的bean。yml

在应用程序中配置数据源时不需要额外的bean。yml

我的配置示例:

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
。如前所述,不需要自己的配置。

我的配置示例:

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
。如前所述,不需要自己的配置。

删除您的
AppConfig
。SpringBoot为您配置了所有这些。使用框架而不是围绕框架工作。删除您的
AppConfig
。SpringBoot为您配置了所有这些。使用框架而不是围绕框架工作。您使用
connectionInitSql:“SET NAMES'utf8mb4'
保存了我的一天!你用
connectionInitSql:“设置名称'utf8mb4'”
保存了我的一天!