在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整合这一块放出来