解决方案 »

  1.   


    private Service service;

    public Service getService() {
    return service;
    } public void setService(Service service) {
    this.service = service;
    if(service!=null){
    System.out.println(1);
    }
    }
    配置文件<bean id="action" class="cn.xawl.action.Action">
    <property name="service" ref="service"></property>
    </bean>

    <bean id="service" class="cn.xawl.service.Service">
    <property name="mapper" ref="mapper"></property>
    </bean>
    服务器启动的时候输出1,应该说没已经注入进去了,但是调用却报错
      

  2.   

    把action配置换到springmvc的那个*-servlet的配置文件去试试呢,而且springmvc的action最好用注解@controller配置
      

  3.   

    springmvc的action用注解@controller配置的,把action配置换到springmvc的那个*-servlet的配置文件不行的
      

  4.   

    如果用了注解就不用再xml里配置了,二者选其一
      

  5.   

    和注解还是xml没关系,我试过了已经还是NullPointerException
      

  6.   

    你在配置文件中加上default-autowire=byName就可以
      

  7.   

    把action的xml配置去掉,然后把service加上@service注解,应该不会再报错吧
      

  8.   

    10L正解,Action加@Controller,Service加@Service,service加@Resource,XML里不需要。
      

  9.   

    不是这个自动装配的原因,,,服务器启动的时候spring已经给actiong里的属性service注入了对象,但是程序跑起来的时候调用service的时候这个时候抱service空指针
      

  10.   

    本来不想打这么多字的。你现在相当于配置重复了,你说的确实是装配了,application.xml配置中装配了一个action,*-servlet.xml中装配了一个controller,但是实际web请求的时候,用的是后边那个controller,而此controller是用注解加载的,这里边没有注入service,所以你在这加个@resource吧service注入进来,你的那个action配置对于springmvc来说是没有用的。
      

  11.   

    14L说的很对,打印1的那个Action对象和处理请求的Action对象不是同一个对象,一个是xml里加载的,另一个是@Controller注释加载的,这个里面没有装配service。
      

  12.   

    我觉得是mapper是空的,mybatis在动态代理的时候容易出错哦
      

  13.   

    多谢lsongiu86,空指针已经消失了
      

  14.   

    你的这个Action只是放在了spring容器里,不一定是 controller 访问的那个Action。
    应该是没理解SpringMVC的配置