Spring的得到JdbcTemplate,报NullPointerException
很明显JdbcTemplate没有被事例化
<beans>
<bean id= "dataSource "
class= "org.apache.commons.dbcp.BasicDataSource ">
<property name= "driverClassName ">
<value> net.sourceforge.jtds.jdbc.Driver </value>
</property>
<property name= "url ">
<value> jdbc:jtds:sqlserver://127.0.0.1:1433/test </value>
</property>
<property name= "username ">
<value> sa </value>
</property>
<property name= "password ">
<value> </value>
</property>
</bean>
<bean id= "jdbcTemplate " class= "org.springframework.jdbc.core.JdbcTemplate ">
<constructor-arg>
<ref bean= "dataSource " />
</constructor-arg>
</bean>
<bean id= "dao " class= "bean.Dao " singleton= "false ">
<property name= "jdbcTemplate ">
<ref bean= "jdbcTemplate " />
</property>
</bean>
</beans>
public class Dao implements DaoImpl{
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void findAll() {
String sql = "select * from user ";
jdbcTemplate.execute(sql); //报错
}
}
[解决办法]
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
---------
要get吗?
[解决办法]
原因是没有得到数据源,spring的数据源注入方式,有两种方式可以等到,一种是web应用,spring会把数据源保存在servletContext中,建议你的数据操作类继承自JdbcDaoSupport,此类是spring的数据访问支持实现.这时spring框架会自动调用JdbcDaoSupport的setJdbcTemplate方法