各位好,现在很郁闷,请各位帮帮忙呢。 
我在java类中测试: 
            ApplicationContext context;
               System.out.println("Initalizing application");
               context=new ClassPathXmlApplicationContext("applicationContext.xml");
               System.out.println("Getting testDao");
               UserDAO2 testDao=(UserDAO2)context.getBean("userDAO2");
               
               TUser user = testDao.getUserByUsername("xuetao");
               System.out.println(user.getSex());测试通过。 
在页面上调用: 
UserDAO2 userDAO2=new UserDAO2();
               TUser user = userDAO2.getUserByUsername("xuetao");
               System.out.println(user.getSex()); 但是在页面上报错: 
java.lang.IllegalArgumentException: No SqlMapClient specified 
org.springframework.util.Assert.notNull(Assert.java:90) 
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:155) 
org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:222) ,好像是类中的 sqlMapClient 没有映射上呢。 
谢谢帮忙出出主意。

解决方案 »

  1.   

    applicationContext.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <!-- DataSource -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName">
                <value>oracle.jdbc.driver.OracleDriver</value>
            </property>
            <property name="url">
                <value>jdbc:oracle:thin:@127.0.0.1:1521:EOS</value>
            </property>
            <property name="username">
                <value>yccrm</value>
            </property>
            <property name="password">
                <value>admin</value>
            </property>
        </bean>
        
        <!-- Spring iBatis SqlMapClient -->
        <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
            <property name="configLocation" value="classpath:sqlmap-config.xml"/>
            <property name="dataSource" ref="dataSource"/>
          </bean>
          
          <!-- Spring iBatisTemplate -->
          <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
              <property name="sqlMapClient">
                  <ref bean="sqlMapClient"/>
              </property>
          </bean>
        <!-- UserDAO方案er -->
        <bean id="userDAO2" class="org.xuetao.webservice.dao.UserDAO2">
            <property name="sqlMapClient">
                <ref bean="sqlMapClient"/>
            </property>
        </bean></beans> 
      

  2.   

    tomcat服务器
    java调用类:public class UserDAO2 extends SqlMapClientDaoSupport{
        public TUser getUserByUsername(String username){
            try {
                return (TUser) super.getSqlMapClient().queryForObject("getUserbyUsername", username);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
            //return (TUser) getSqlMapClientTemplate().queryForObject("getUserbyUsername", username);
            
        }
    }在jsp是这样调用的: 
    UserDAO2 userDAO2=new UserDAO2(); 
                  TUser user = userDAO2.getUserByUsername("xuetao"); 
                  System.out.println(user.getSex()); 
    报错在上面帮忙看看呢
      

  3.   

    不要在页面上调用dao
    要调也不能直接new出来,因为new出来的没有注入sqlMapClient
    所有你的dao对象要从spring容器出去取.
      

  4.   

    楼上说的很明白了,new的对象是无法得到spring注入其中的变量的,要从容器里取
      

  5.   

    我现在改过了呢,但是好像Spring注入到接口,还是有问题呢。
      

  6.   

    说白了就是用了Spring后就不能直接new dao出来了!必须重容器里取
      

  7.   

    我在spring注入的不是Dao层的sqlMapClient对象吗,那么Dao这个对象应该就可以直接new出来的呢,因为dao曾我没有在spring添加管理。
    各位是我不是我又错了呢
      

  8.   

    建议LZ先看一些java基础书籍在来用spring
      

  9.   

    谢谢各位,现在对spring的ioc有了很深了解了呢