首先,servlet是動態網頁項目區別於普通的java項目的,是動態網頁項目中web.xml主要配置文件管理的,
而spring只能管理普通的pojo,而沒辦法直接注入,儘管你的注入方式和配置方式都沒有問題。
那如何解決這個問題呢?解決的辦法總比遇到的問題多,否則spring MVC又是如何作到呢?其實filter也是會遇到相似問題的。
我的建議使用第四種方式
第一種解決辦法是:
在servlet中的init方法或者是無參構造方法內直接用最原始的方式進行手動注入,即相似以下:
WebApplicationContext wactx = WebApplicationConteextUtils.getWebApplicationContext(request.getServletContext);
xxxService接口 = wactx.getBean(XxxService接口.class);
除了能夠用WebApplicationContext獲取以外,用ClassPathXmlApplicationContext來獲取也是能夠的。java
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplication("配置文件路徑字符串");web
xxxService接口 = ctx.getBean("id的字符串",XxxService接口.class);
這樣兩種方法能夠減小該Service接口的set方法。
第二種解決辦法是:
用本身手寫一個關於用包名和類名直接反射成一個類,再以對象的方式返回來解決,這樣也能夠不用寫相應service的set方法,可是這樣的
造輪子是不必的。spring
第三種解決辦法是:
新寫一個servlet,並且能夠實現給一個完整類名就能夠反射出一個對象的,而後在其餘各個servlet中均可以用繼承的方式來造各類想要的類,可是
這樣仍是要寫各類set方法。xml
第四種解決辦法是:
這個時候直接用spring MVC吧,無論是配置仍是用註解,都是比較方便的,並且spring MVC的開發方式也是對你的開發效率提高有很大優點的。對象