加急贴! spring JDBCtemplete spring容器无法创建对象!希望大家帮帮我...

share_code 发布于 2011/05/06 20:17
阅读 837
收藏 1

问题  : 使用spring JDBCtemplete 进行数据库操作  不在web 环境下运行 使用单元测试 都没有问题,完全可以? 但是到web 环境 spring就不能创建对象了  问题应该在jdbcTemplete 无法创建对象 所以不能注入给其他对象 打印出来的都是null

配置如下:

   <!-- 将数据源值放入属性文件中 -->
 <context:property-placeholder location="classpath:JDBC.properties"/>
 
 <!-- 配置数据源 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
     <property name="driverClassName" value="${driverClassName}"/>
     <property name="url" value="${url}"/>
     <property name="username" value="${username}"/>
     <property name="password" value="${password}"/>
      <!-- 连接池启动时的初始值 -->
   <property name="initialSize" value="${initialSize}"/>
   <!-- 连接池的最大值 -->
   <property name="maxActive" value="${maxActive}"/>
   <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
   <property name="maxIdle" value="${maxIdle}"/>
   <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
   <property name="minIdle" value="${minIdle}"/>
  </bean>
  
  <!-- 配置JDBCTEMPLETE -->
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
 </bean>                      //个人感觉问题都与 本提问的 红色字体有关。 各位帮帮忙了

 

<!--用户DAO配置 -->
 <bean id="userDao" class="com.kela.dao.impl.UserDAOImp">
  <property name="jdbcTemplate">
   <ref bean="jdbcTemplate"/>
  </property> 
 </bean>

 

<bean id="userBiz" class="com.kela.biz.impl.UserBizImpl">
  <property name="userDao">
   <ref bean="userDao"/>
  </property>
 </bean>
 

public class UserDAOImp extends JdbcDaoSupport implements UserDao {

 /**
  *描述:对用户进行全查 
  *返回:用户集合 
  *@exception  
  *@since  1.0.0
  */
 @SuppressWarnings("unchecked")
 public List<User> queryAll(){
  
  String sql = "select * from t_users";
  List<User> list = (List<User>) getJdbcTemplate().query(sql,new RowMapperResultSetExtractor(new UserRowMapper()));
  return list;
 }

 

public class UserBizImpl implements UserBiz {

 private UserDao userDao;  //这个一直是空的  spring启动初始化正常 单元测试也正常
 
   public List<User> getUserList() {
  
  return  userDao.queryAll();
 } 

   单元测试都是没有问题的 进入web  环境 spring就不能创建对象了! ,各位麻烦了 加急!

加载中
0
bluechant
bluechant

userdao 有 set 方法么?

0
bluechant
bluechant

是用webapplicationcontext加载的spring配置文件还是放到src下用classpath加载地?

如何调用的userbizimpl? 确定调用是spring托管的单例的userbizimpl么。 直接调用肯定是null。

0
share_code
share_code

引用来自#2楼“bluechant”的帖子

userdao 有 set 方法么?

 肯定有 ,服务是能正常 启动的 单元测试可以通过!

0
share_code
share_code

引用来自#3楼“bluechant”的帖子

是用webapplicationcontext加载的spring配置文件还是放到src下用classpath加载地?

如何调用的userbizimpl? 确定调用是spring托管的单例的userbizimpl么。 直接调用肯定是null。

 应该不是这个原因

0
share_code
share_code

网上有人让我  继承  SimpleJdbcDaoSupport  说就OK了 我现在在试 

0
share_code
share_code

还搞不定  ,spring直接不创建对象了! 工程启动的时候都正常 日志里面  都显示 所有对象已经创建!

0
insights
insights

没用过这个,用过hibernateDaoSupport..不过你是否给JDBCDaoSupport 注入 JDBCTemplate .如果继承自DaoSupport 我记得,要注入template时候,要自己写个方法.setXXXXXXX(JDBCTemplate jdbcTemplate) {jdbcTemplate = jdbcTemplate;} ,因为之前的setJDBCTemplate 是无法重写的.反正就是得在配置文件中bean 定义name,写XXXXX这个值.你试试.

0
share_code
share_code

spring 对hibernateDaoSupport 我感觉支持很好  用  它从来没有出现过 问题, 集成hibernateDaoSupport  自动 注入 hibernateTemplte   而 我在使用JbdcTemplte的 时候 就出现了 注入失败 空指针问题 , 不过 已经解决了,  我在Dao层 最后并没有 继承JbdcDaoSupport  只是写 属性 private DataSource dataSource  把数据源直接注入到 Dao 层 而在每一个方法中 使用 JbdcTemplte jbdcTemplte = new JbdcTemplte(dataSource  )

jbdcTemplte .query(...),  不过不知道这种方式 要不要关闭 链接  jbdcTemplte  是自己创建出来的  对链接的处理 我现在还在看源代码!

0
share_code
share_code

刚把spring  jdbc 操作相关的 源代码又看了一遍 , 现在继承 jdbcDaoSurpport  也可以实现了 .

返回顶部
顶部