Автор оригинала: mkyong.
Простой класс DAO расширяет JdbcDaoSupport
, но, поскольку невозможно ввести или @автоматически подключить “источник данных”, метод setDataSource
является окончательным, не может быть переопределен.
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
чтобы ввести Источник данных
вот так:
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
и делайте все, что хотите. Погрузитесь в исходный код jdbcdaподдержка
, это просто простой вспомогательный класс для создания JdbcTemplate
.
Оригинал: “https://mkyong.com/spring/how-to-autowire-datasource-in-jdbcdaosupport/”