日期:2014-05-20  浏览次数:20796 次

spring+ibatis整合的一个奇怪问题,问题解决给分
各位好,现在很郁闷,请各位帮帮忙呢。 
我在java类中测试: 
Java code
            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());


测试通过。 
在页面上调用: 
Java code
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 没有映射上呢。 
谢谢帮忙出出主意。

------解决方案--------------------
不要在页面上调用dao
要调也不能直接new出来,因为new出来的没有注入sqlMapClient
所有你的dao对象要从spring容器出去取.
------解决方案--------------------
楼上说的很明白了,new的对象是无法得到spring注入其中的变量的,要从容器里取
------解决方案--------------------
说白了就是用了Spring后就不能直接new dao出来了!必须重容器里取
------解决方案--------------------
建议LZ先看一些java基础书籍在来用spring