环绕过滤器能够在Action执行之前和之后执行一段代码,相比前置过滤器和后置过滤器而言更加强大。可以为Action设置多个环绕过滤器,通过在控制器上进行注解:
@AroundFilters({
@AroundFilter(execute=A.class),
@AroundFilter(execute=B.class)
})
public class ApplicationController extends Controller{
环绕过滤器可以接受only和except参数以控制在那些Action上执行。
注意前置和后置过滤器的execute是执行的方法名称,而环绕过滤器的execute是一个类,这个类必须实现AroundHandler接口,或者继承AbstractAroundHandler类。
多个环绕过滤器的执行是嵌套的,如上例的执行顺序如下:
A.before
B.before
Action
B.after
A.after
环绕过滤器可以处理身份验证,错误处理,日志处理,事务控制等,比如在Action中操作数据库的代码,如果需要事务控制,可以写上
try{
beginTransaction();
...
commit();
}
catch(Exception ex){
rollback();
}
之类的代码,但利用环绕过滤器可以有更优雅的做法,这时Action代码保持不变,注解加上事务过滤器就好,过滤器代码如下所示:
public class TranFilter extends AbstractAroundHandler{
@Override
public boolean before(Controller controller) throws Exception{
ActiveRecordBase.beginTransaction();
return true;
}
@Override
public boolean after(Controller controller) throws Exception{
if (controller.getException() == null){
ActiveRecordBase.commit();
}
else{
ActiveRecordBase.rollback();
}
return true;
}
}
before方法保证执行在Action 之前,after则执行在Action之后,且只要before执行成功,保存一定会执行after。这样,在需要事务控制的控制器上,只要加上
@AroundFilter(execute=TranFilter.class, only={"update","create"})
这样的代码就行了。
关于etmvc的详细资料,请访问www.etmvc.cn
分享到:
相关推荐
### 利用WDM过滤器驱动实现串口共享 #### 概述 本文档主要探讨了如何通过Windows Driver Model(WDM)中的过滤器驱动来实现串行通信端口(简称“串口”)的共享功能。在多任务操作系统中,串口资源往往是有限的,...
2. **声明事务边界**:在需要事务控制的方法上添加@Transactional注解,指定事务的传播行为、隔离级别、读写模式等属性。 3. **创建事务代理**:对于需要事务控制的业务服务,使用TransactionProxyFactoryBean创建...
通过以上分析可以看出,在设计医院预约挂号系统时,合理利用边界类、控制类和实体类的概念,不仅可以帮助我们更好地理解系统的架构,还能有效地指导后续的开发工作。此外,通过绘制B-C-E包图、顺序图和协作图等UML...
文章主要聚焦于利用滑模控制(Sliding Mode Control,简称SMC)结合边界层技术(Boundary Layer Method,简称BL)来改进传统的机器人控制方法,并提出了一种新颖的控制方法,即滑模边界层控制(SMCBL),以解决...
在本主题中,“变边界层的滑膜控制simulink+手写笔记”是关于如何利用Simulink来实现这一控制算法的一个实例,用于跟踪期望轨迹。Simulink是MATLAB的一个扩展工具箱,它允许用户通过图形化界面构建和仿真动态系统的...
7. **事物边界**:理解事务边界是确保事务正确性的关键。事务开始于@Transactional注解的方法的入口,结束于方法的返回。在此期间的所有数据库操作都将在同一个事务中进行。 8. **事务同步**:Spring提供了...
在Spring框架中,为了管理和控制Hibernate事务,Spring提供了两种关键工具:HibernateTemplate和JdbcTemplate。这两个模板类简化了与数据库的交互,同时也处理了事务管理。让我们深入了解一下这两个类以及它们如何...
本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将详细讨论相关知识点。 首先,事务传播行为是指当一个被@Transactional注解的方法被另一个@...
高等学校专业教材《数值分析》第96页例8-2的例子,利用自由边界三次样条函数拟合函数
《预测控制约束边界效应与解决方法研究》这篇文章深入探讨了在约束预测控制(Constrained Model Predictive Control, CMPC)中的一个关键问题——约束边界效应。CMPC是一种先进的控制策略,它通过预测未来系统行为来...
本文将深入探讨如何在Spring中利用AspectJ实现事务控制。 首先,我们需要理解什么是AspectJ。AspectJ是一种面向切面编程(AOP)的Java语言扩展,它允许开发者定义“切面”——关注点的模块化,这些关注点包括日志、...
UDF ,边界条件,主要是用UDF来改变边界条件,以此调节输出值,这是个改变温度的输出。
Spring事务管理提供了一种声明式的方式来控制事务边界,使得开发者无需显式地调用开始、提交或回滚事务。 在Spring中,有以下两种事务管理方式: 1. **编程式事务管理**:开发者需要手动调用`...
6. **MyBatis拦截器与事务控制**:MyBatis提供了一个拦截器机制,可以通过自定义拦截器来扩展事务管理功能,比如实现事务的乐观锁或者读写分离策略。 7. **源码分析**:对于深入理解MyBatis的事务管理,阅读其源码...