# spring-jfinal **Repository Path**: sphsyv/spring-jfinal ## Basic Information - **Project Name**: spring-jfinal - **Description**: 用于整合 spring + jfinal . - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2015-03-18 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #spring-jfinal 作用于 spring 和 jfinal 的整合。 ## 1、web.xml ```xml contextConfigLocation WEB-INF/spring.xml org.springframework.web.context.ContextLoaderListener jfinal com.jfinal.core.SpringJFinalFilter configClass demo.run.JfinalConfig jfinal /* ``` 以上通过 SpringJFinalFilter 过滤器加载 spring 。 其中 JfinalConfig 自动注册 springbean(JfinalConfig 中可以使用 注解注入属性哦,或者 实现 ApplicationContextAware  接口自动注入 ApplicationContext)。 初始化顺序(不配置 ContextLoaderListener 的情况下): SpringJFinalFilter -> ApplicationContext -> JFinal -> -> JFinalConfig ... (其他 照旧 ) . 初始化顺序(配置 ContextLoaderListener 的情况下)。 ApplicationContext -> SpringJFinalFilter -> JFinal -> -> JFinalConfig ... (其他 照旧 ) . ## 2、JFinalConfig ``` java public class HelloJFinalConfig extends JFinalConfig { @Autowired public void setApplicationContext(ApplicationContext ctx) { System.out.println("HelloController attr[ApplicationContext] 已注入。。"); } ... } ``` 其中 HelloJFinalConfig 自动注入 springbean , scope = "singleton" . ## 3、Controller ``` java public class HelloController extends Controller { @Autowired public void setApplicationContext(ApplicationContext ctx) { System.out.println("HelloController attr[ApplicationContext] 已注入。。"); } } ``` 其中 Controller 自动注入 springbean , scope = "prototype" 原因是 jfinal 也是每次请求创建实例 . ## 4、页面使用 ApplicationContext ``` text 添加 ContextSpringHandler 就可以了。使用方式可以参照 ContextPathHandler。 ``` ## 5、spring 事物管理 ```xml ``` 以上是 xml 配置方式。 重点是在 ActiveRecordPlugin 中注入 代理数据源。 ## 6、基于 SpringPlugin 的 加载 spring . ```java public class JFinalConfigMe extends JFinalConfig { private ApplicationContext ctx; // lazy (原因是 jfinal 先实例化 JFinalConfig 在 JFinal.init 初始化相关配置 ) public ApplicationContext getApplicationContext(){ if(ctx == null) ctx = WebApplicationContextUtils.getWebApplicationContext(JFinal.me().getServletContext()); return ctx; } @Override public void configConstant(Constants me) { } @Override public void configRoute(Routes me) { } @Override public void configPlugin(Plugins me) { me.add(new SpringPlugin(getApplicationContext())); } @Override public void configInterceptor(Interceptors me) { } @Override public void configHandler(Handlers me) { } } ``` - 可以使用 加载 WEB-INF 下的文件哦(需要配置 ContextLoaderListener) 推荐. - 如果不配置 ContextLoaderListener 使用 WEB-INF 下的文件 的 classpath:../**文件。 ## 7、更多支持 - spring-jfinal 下载地址[http://pan.baidu.com/s/1i3Dw08P#path=%252Fspring-jfinal] - oschina 开源社区 [http://www.oschina.net/p/spring-jfinal?from=mail-notify] - JFinal 官方网站 [http://www.jfinal.com](http://www.jfinal.com/) - 关注官方微信号马上体验 demo 功能 ![JFinal Weixin SDK](http://static.oschina.net/uploads/space/2015/0211/181947_2431_201137.jpg)