应该不会是监听写的不对所以服务器启动的时候就没有去构造我的Bean吧需要的话,我把服务器启动的log4j也黏上来,启动时没有报错,似乎一切正常......

解决方案 »

  1.   

    queryServlet是怎么被spring管理起来的
      

  2.   

    当然BaseDao 是 LoginDao 的父类 
    那你的BaseDao的定义哪?
    建议:     采用接口,实现的方式定义spring配置!然后注入接口!
      

  3.   

    package dao;import java.util.List;import org.springframework.jdbc.core.JdbcTemplate;public class BaseDao {
    private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() {
    return jdbcTemplate;
    } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
    }
    public List query() {
    return null;
    }
    public Object queryById(int id) {
    return null;
    }
    public int insert(Object obj) {
    return 0;
    }
    public int update(Object obj) {
    return 0;
    }
    public int delete(Object obj) {
    return 0;
    }
    }
      

  4.   

    按照你的配置和思路,由于你没有在spring里配置BaseDao,而loginDao已经进行了配置,而且后者是前者的子类,貌似你的意思也是要使用loginDao,那么你在QueryServlet里应该这么写
    private LoginDao loginDao; 
    public void setLoginDao (LoginDao loginDao) { 
    this.loginDao = loginDao; 

    然后程序里引用loginDao的query方法;
    这样你才能引用到spring管理的bean,设值注入时,引用名要和配置中的一致.
    还有不知道,你的子类重写父类的方法没,看你贴出来的东西,都是返回null.其实还是面向接口编程比较好。
      

  5.   

    现在我能确认是监听没有起作用,服务器启动在构造servlet时就没有,把我的bean注进来帮我看看我的监听是不是有问题:
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener><context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
      

  6.   

    我刚才又写了一个loginbean介于servlet和dao之间把dao注入loginBean中在用XmlBeanFactory在servlet中获得 loginBean
    成功,loginDao的实体可以被成功注入进BaseDao,query()方法执行的也是loginDao重写的方法但是监听怎么搞呢?
      

  7.   

    你在action中打印一下dao看看是不是为null
    看你写的配置 应该是注入进来了
      

  8.   

    queryServlet这个bean,是怎么初始化进来的
      

  9.   

    queryServlet就是个最基本的servlet:
    public class QueryServlet extends HttpServlet ......
    应该是容器动态实例化的吧