# 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 功能
