Я пытаюсь внедрить (Autowire) JDBCTemplate в мой класс Dao, который является «абстрактным классом». Это не работает, а весна дает нулевой компонент для JDBCTemplate.Spring autowiring дает null bean для абстрактного класса
public abstract class SSODaoImpl extends NamedParameterJdbcDaoSupport implements SSODao{
public SSODaoImpl(){
}
@Autowired //giving null jdbcTemplate
public SSODaoImpl(JdbcTemplate jdbcTemplate){
super.setJdbcTemplate(jdbcTemplate);
}
}
SSODaoImpl удлиняется мои многие другие объекты DAO, как один ниже
@Repository("askBenefitsDAO")
public class AskBenefitsSSODaoImpl extends SSODaoImpl{
}
Я создал компонент в файле JDBCContext.xml и ссылки его в web.xml
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jndi/hpdb_hrdb"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
Веб.xml
<context-param>
<param-name> /WEB-INF/spring/JDBCTemplate/JDBCContext.xml</param-value>
</context-param>
Сообщения об ошибке с весны, а запуск приложения
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'askBenefitsDAO' defined in file [AskBenefitsSSODaoImpl.class]:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required
выше установка работает для «Non Абстрактного класса» создан. Пожалуйста, помогите мне с этим и дайте мне знать, что я делаю неправильно
Я не уверен, что это связано с абстрактным классом. JdbcTemplate берет 'javax.sql.DataSource' в своем конструкторе. Из xml аргумент конструктора ссылается на dataSource, но dataSource не является 'javax.sql.DataSource'. –
@ Andrew S Я назвал ссылку ниже [ссылка] (http://stackoverflow.com/questions/9183321/how-to-use-jndi-datasource-provided-by-tomcat-in-spring) – krrish0690