在SpringMVC中整合jfinal微信項目
背景
為了業務拓展,項目需要使用微信,于是找到了 jfinal 微信項目~~~
jfinal 自帶mvc,orm,ioc框架,jfinal wx 又封裝了 微信官方sdk庫,還算比較好用~
可是,對于jfinal框架依賴太嚴重。。。
然后經過一段時間的使用,CTO發話了,需要項目集成,覺得 jfinal 微信項目單獨部署一個Tomcat服務器太麻煩了~ 多個系統交互時還需要使用RPC,每次微信項目更新還需要更新其他項目的jar包~ 項目拆分多個,問題多多啊~~
于是我得考慮這個事情該怎么搞比較好。
把項目集成有兩種方案:
1.將jfinal wx項目集成到主項目中,主項目使用spring mvc。
2.重寫主項目微信模塊,主要涉及到 微信服務器認證簽名,微信事件處理,微信AccessTokenCacheRefesh問題。
考慮了了一下,還是使用第一種方案,將jfinal wx項目集成。
要保證兩個點:
1.集成時項目不能影響主項目。
2.jfinal wx項目能使用主項目的東西,如:Spring的Ioc,事務這一塊。
于是看了一下jfinal的源碼,發現so easy 。
思路
重寫jfinal的JFinalFilter 過濾器,采用裝飾者設計模式.
根據指定路徑進行業務處理,如:/wx則已jfinal wx處理,其他的走主業務正常流程。
源碼
web.xml
<filter> <filter-name>jfinal</filter-name> <filter-class>com.jfinal.weixin.filter.NewJFinalFilter</filter-class> <init-param> <param-name>configClass</param-name> <param-value>com.jfinal.weixin.demo.WeixinConfig</param-value> </init-param> </filter> <filter-mapping> <filter-name>jfinal</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
NewJFinalFilter.java
package com.jfinal.weixin.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import com.jfinal.core.JFinalFilter; /** * JFinal framework filter */ public final class NewJFinalFilter implements Filter { JFinalFilter jFinalFilter = new JFinalFilter(); public void init(FilterConfig filterConfig) throws ServletException { jFinalFilter.init(filterConfig); } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String uri = request.getRequestURI(); if (uri.startsWith("/wx")) jFinalFilter.doFilter(req, res, chain); else chain.doFilter(req, res); } public void destroy() { jFinalFilter.destroy(); } }
上面的配置即可實現 Spring MVC& Jfinal wx的項目整合。
源碼包圖
項目啟動日志圖
訪問如下接口,返回結果正常,不影響原有業務邏輯。
http://localhost/checkVerInfo
http://localhost/wx/api/getFollowers
收藏點贊的人多我就把第二點放出來,jfinal wx與spring service整合這一塊放出來