zoukankan      html  css  js  c++  java
  • 关于spring中无法将service注入到servlet中的问题

     首先,servlet是动态网页项目区别于普通的java项目的,是动态网页项目中web.xml主要配置文件管理的,
    而spring只能管理普通的pojo,而没办法直接注入,尽管你的注入方式和配置方式都没有问题。
    那如何解决这个问题呢?解决的办法总比遇到的问题多,不然spring MVC又是如何做到呢?其实filter也是会遇到类似问题的。
    个人建议使用第四种方式
      第一种解决办法是:

      在servlet中的init方法或者是无参构造方法内直接用最原始的方式进行手动注入,即类似如下:
    WebApplicationContext wactx = WebApplicationConteextUtils.getWebApplicationContext(request.getServletContext);
    xxxService接口 = wactx.getBean(XxxService接口.class); 
    除了可以用WebApplicationContext获取之外,用ClassPathXmlApplicationContext来获取也是可以的。

    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplication("配置文件路径字符串");

    xxxService接口 = ctx.getBean("id的字符串",XxxService接口.class); 
    这样两种方法可以减少该Service接口的set方法。

      第二种解决办法是:

      用自己手写一个关于用包名和类名直接反射成一个类,再以对象的方式返回来解决,这样也可以不用写相应service的set方法,但是这样的
    造轮子是没必要的。

      第三种解决办法是:

      新写一个servlet,而且可以实现给一个完整类名就可以反射出一个对象的,然后在其他各个servlet中都可以用继承的方式来造各种想要的类,但是
    这样还是要写各种set方法。

      第四种解决办法是:

      这个时候直接用spring MVC吧,不管是配置还是用注解,都是比较方便的,而且spring MVC的开发方式也是对你的开发效率提升有很大优势的。

  • 相关阅读:
    TODO java 作业-梭哈--待完成
    java练习:质数,匿名内部类创建接口,抽象类派生子类,画圆,字节截取字符串,数字变钱币,五子棋,梭哈
    查看android源码,windows环境下载源码
    TODO monkey笔记,PC端执行和手机端执行
    TODO java-web相关 servlet过滤器+监听器
    Android学习笔记
    【洛谷P1962】斐波那契数列
    【洛谷P3390】矩阵快速幂
    【洛谷P1323】删数问题
    【洛谷P1996】约瑟夫问题
  • 原文地址:https://www.cnblogs.com/xiaocao1434/p/5329539.html
Copyright © 2011-2022 走看看