開発者ドキュメント

JdbcDaoSupportでDataSourceをオートワイヤリングする方法

シンプルなDAOクラスは

JdbcDaoSupport`を拡張していますが、

dataSource`を注入することはできませんし、 `setDataSource`メソッドはfinalでオーバーライドできません。

UserDetailsDaoImpl.java

package com.mkyong.users.dao;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class UserDetailsDaoImpl extends JdbcDaoSupport implements UserDetailsDao {

   //Error, cannot override the final method from JdbcDaoSupport
    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

}

解決策

それを素早く修正するには、

@ PostConstruct`を使って

dataSource`を次のように注入します:

UserDetailsDaoImpl.java

package com.mkyong.users.dao;
import javax.sql.DataSource;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class UserDetailsDaoImpl extends JdbcDaoSupport implements UserDetailsDao {

    @Autowired
    private DataSource dataSource;

    @PostConstruct
    private void initialize() {
        setDataSource(dataSource);
    }

}

代わりに、

JdbcDaoSupport`クラスの独自の実装を作成し、必要な処理を行います。 `JdbcDaoSupport`のソースコード内でダイブすると、

jdbcTemplate`を作成するだけの簡単なヘルパークラスです。

モバイルバージョンを終了