在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整合這一塊放出來