首先,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的開發方式也是對你的開發效率提升有很大優勢的。