spring-jfinal 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
spring-jfinal 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开发厂商
地区 国产
提 交 者 ylx252
适用人群 未知
收录时间 2015-03-09

软件简介

spring-jfinal 用于整合 spring 和 jfinal。

依赖 jar

jfinal、javassist v3.*、Spring v3+(3.2.0之前需要依赖cglib)

使用Maven

    <dependency>
      <groupId>cc.ecore</groupId>
      <artifactId>spring-jfinal-plugin</artifactId>
      <version>x.x.x</version>
    </dependency>

1、web.xml

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.SpringJFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>com.demo.test.CommonConfig</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

以上通过 SpringJFinalFilter 过滤器加载 spring 。 其中 JfinalConfig 自动注册 springbean(JfinalConfig 中可以使用 注解注入属性哦,或者 实现 ApplicationContextAware  接口自动注入 ApplicationContext)。

初始化顺序(不配置 ContextLoaderListener 的情况下): SpringJFinalFilter -> ApplicationContext -> JFinal -> JFinalConfig ... (其他 照旧 ) . 初始化顺序(配置 ContextLoaderListener 的情况下)。 ApplicationContext -> SpringJFinalFilter -> JFinal -> JFinalConfig ... (其他 照旧 ) .

2、JFinalConfig

	public class CommonConfig extends JFinalConfig {
	
		@Autowired
		public void setApplicationContext(ApplicationContext ctx) {
			System.out.println("HelloController attr[ApplicationContext] 已注入。。");
		}
		...
	}

其中 HelloJFinalConfig 自动注入 springbean , scope = "singleton" .

3、Controller

	public class HelloController extends Controller {
	
		@Autowired
		public void setApplicationContext(ApplicationContext ctx) {
			System.out.println("HelloController attr[ApplicationContext] 已注入。。");
		}
	}

其中 Controller 自动注入 springbean , scope = "prototype" 原因是 jfinal 也是每次请求创建实例 .

4、spring 事务管理

    <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="username" value="${db.userName}" />
		<property name="password" value="${db.passWord}" />
		<property name="url" value="${db.jdbcUrl}" />
		<property name="driverClassName" value="${db.driverClassName}" />
		<property name="initialSize" value="${db.initialSize}" />
		<property name="maxActive" value="${db.maxActive}" />
		<property name="minIdle" value="${db.minIdle}" />
	</bean>
	<!-- spring 事务管理 ,ActiveRecordPlugin可以获得此 dataSource 可以把事务交给spring 管理 -->
	<bean id="dataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
		<property name="targetDataSource" ref="druidDataSource" />
	</bean>

	<!-- ================================事务相关控制================================================= -->
	<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSourceProxy"></property>
	</bean>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="delete*" propagation="REQUIRED" read-only="false" />
			<tx:method name="insert*" propagation="REQUIRED" read-only="false" />
			<tx:method name="update*" propagation="REQUIRED" read-only="false" />

			<tx:method name="find*" propagation="SUPPORTS" />
			<tx:method name="get*" propagation="SUPPORTS" />
			<tx:method name="select*" propagation="SUPPORTS" />
		</tx:attributes>
	</tx:advice>

	<!-- 把事务控制在Service层 -->
	<aop:config>
		<aop:pointcut id="pc" expression="execution(public * demo.service.*.*(..))" />
		<aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />
	</aop:config>

以上是 xml 配置方式。 重点是在 ActiveRecordPlugin 中注入 代理数据源。

5、jetty 启动.

    public static void main(String[] args) {
        CtFactory.toClass();// 这个必须启动前执行
        // ...
    }
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
挺好,整合了Spring #spring-jfinal#
2015/04/09 14:48
回复
举报
SpringJFinalFilter 过滤器 #spring-jfinal#
2015/05/13 12:00
回复
举报
在哪里 #spring-jfinal#
2015/05/13 12:00
回复
举报
更多评论
发表了资讯
2016/03/25 00:00

spring-jfinal 0.0.1 发布, spring jfinal 整合

spring-jfinal 0.0.1 发布了。 spring-jfina是作用于 spring 和 jfinal(理论上支持所有版本) 的整合。 依赖 jar jfinal、javassist 3.* 详情请看 https://git.oschina.net/Bitter/spring-jfinal 下载地址:https://git.oschina.net/Bitter/spring-jfinal/repository/archive/master...

3
21
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于AI & 大数据专区
2018/09/14 21:10

Jfinal集成Spring插件

最近公司使用Jfinal开发项目,不知道什么原因Jfinal和其他的几个插件集成的时候,事物管理并不那么随心,所以就选择了Spring作为Jfinal的插件来管理事物.废话不多说,直接上代码. public class MyConfig extends J...

0
8
发表于大前端专区
2015/11/03 22:57

SpringMVC 集成 JFinal Dao

写SpringMVC 的时候想偷懒不写繁琐的实体、XML映射吗?那就集成JFinal吧!!

6
63
2015/04/11 15:04

JFinal之JFinal学习日记

记录JFinal学习过程中遇到的问题、心得

1
1
发表了博客
10/03 10:05

jfinal(1)—jfinal-undertow 下开发 jfinal项目

1、创建标准的 maven web项目 没装maven和没创建maven web项目的可以看这三篇! maven安装 Eclipse和maven工具的集成 Eclipse使用maven创建web项目 2、添加 jfinal-undertow 与 jfinal 依赖 <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId> <version>2.1</version> <...

0
0
发表了博客
2014/12/21 01:16

jfinal整合spring ioc、注解事务

需求是这样的:现在在controller层和model层中间要加一层service层做业务处理,并且在service层中可以用spring的事务。

4
4
发表于开发技能专区
2015/03/19 10:51

JFinal源码走读_1_jfinal初始化

jfinal的入口 步进分析 jfinal核心初始化方法jfinalinit分析 ConfigconfigJFinaljfinalConfig分析 ConfigconfigJFinaljfinalConfig分析 startPlugins分析 url到action映射的核心实现 initHandler分析 initRender分析 renderFactoryinitconstants servletContext分析 initOreillyCos分析 initI18n分析 initTokenManager分...

2
6
发表于软件架构专区
2015/01/19 12:08

也聊聊JFinal

技术小站: http://www.kiratechblog.com/ 最近给项目选型的时候,选了JFinal这套框架,开始的时候有些小伙伴会不理解,在Java的世界里面那么多的MVC框架,那么多的持久化框架,怎么就选了JFinal这玩意。 吐槽一下 这就不得不从比较正派的J2EE框架说起了(好吧。。。我是个经常不按照常理出牌的工程师),一般企业应用开...

2
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/02/23 16:32

把事务控制在controller层是不是不行?

@ylx252 你好,想跟你请教个问题: 如果:spring-context.xml 中把事务控制在controller层,配置改成如下: <!-- 把事务控制在Service层 --> <aop:config> <aop:pointcut id="pc" expression="execution(public * com.demo.controller.*.*(..))" /> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:con...

13
0
发表了问答
2015/05/13 12:17

com.jfinal.core.SpringJFinalFilter 都没有这个类

@ylx252 你好,想跟你请教个问题:com.jfinal.core.SpringJFinalFilter 没有吧

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
3 评论
38 收藏
分享
返回顶部
顶部