Java 如何使用扩展JDBCDAO支持的类?

Java 如何使用扩展JDBCDAO支持的类?,java,jdbc,Java,Jdbc,我正在使用一个从JdbcDaoSupport扩展而来的类,现在我得到一个错误 Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required 我真的不知道如何指出这一点,所以这个类不会抛出异常 该类如下所示: package org.springframework.jdbc.core.suppo

我正在使用一个从JdbcDaoSupport扩展而来的类,现在我得到一个错误

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required
我真的不知道如何指出这一点,所以这个类不会抛出异常

该类如下所示:

package org.springframework.jdbc.core.support;

import java.sql.Connection;
import javax.sql.DataSource;
import org.springframework.dao.support.DaoSupport;
import org.springframework.jdbc.CannotGetJdbcConnectionException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.jdbc.support.SQLExceptionTranslator;

public abstract class JdbcDaoSupport extends DaoSupport {
    private JdbcTemplate jdbcTemplate;

    public JdbcDaoSupport() {
    }

    public final void setDataSource(DataSource dataSource) {
        if(this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
            this.jdbcTemplate = this.createJdbcTemplate(dataSource);
            this.initTemplateConfig();
        }

    }

    protected JdbcTemplate createJdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    public final DataSource getDataSource() {
        return this.jdbcTemplate != null?this.jdbcTemplate.getDataSource():null;
    }

    public final void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
        this.initTemplateConfig();
    }

    public final JdbcTemplate getJdbcTemplate() {
        return this.jdbcTemplate;
    }

    protected void initTemplateConfig() {
    }

    protected void checkDaoConfig() {
        if(this.jdbcTemplate == null) {
            throw new IllegalArgumentException("\'dataSource\' or \'jdbcTemplate\' is required");
        }
    }

    protected final SQLExceptionTranslator getExceptionTranslator() {
        return this.getJdbcTemplate().getExceptionTranslator();
    }

    protected final Connection getConnection() throws CannotGetJdbcConnectionException {
        return DataSourceUtils.getConnection(this.getDataSource());
    }

    protected final void releaseConnection(Connection con) {
        DataSourceUtils.releaseConnection(con, this.getDataSource());
    }
}

但是我想我必须在扩展这个类的类中包含数据源。你知道怎么做吗?

你的spring配置中有JDBC模板和数据源的条目吗?在创建启动连接时?不,我并没有配置任何jdbc,我使用了带有自动配置注释的SpringBoot。这是我的猜测,我对SpringBoot的了解有限。在application.properties文件中,我们需要指定数据源信息,如连接url、用户名和密码,我相信这些信息是从中获取的。但我不确定这是否有效。您的spring配置中有JDBC模板和数据源的条目吗?在创建启动连接时?不,我并没有配置任何jdbc,我使用了带有自动配置注释的SpringBoot。这是我的猜测,我对SpringBoot的了解有限。在application.properties文件中,我们需要指定数据源信息,如连接url、用户名和密码,我相信这些信息是从中获取的。但我不确定这是否有效。