项目出现Caused by: java.lang.IllegalArgumentException: ‘dataSource‘ or ‘jdbcTemplate‘ is required

当你看到Caused by: java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required错误时证明你正在使用spring提供的JdbcTemplate且以继承JdbcDaoSupport的方式进行使用,再且使用的以下方式进行注入:

@Autowired
DataSource dataSource;

直接使用以上方式进行注入是不合法的,JdbcDaoSupport 是需要一个DataSource 的,请看JdbcDaoSupport 的实现代码:

public abstract class JdbcDaoSupport extends DaoSupport {
    @Nullable
    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();
        }

    }
...

要解决这个错误也很简单通过以下方式注入+调用setDataSource将DataSource 扔给他即可解决

@Autowired
public void setJdbcTemplate(DataSource dataSource) {
	setDataSource(dataSource);
}

如果使用的是xml配置方式可添加以下内容:

<bean id="jdbcTemplate"
      class="org.springframework.jdbc.core.JdbcTemplate">
   <constructor-arg ref="dataSource" />
</bean>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页