环绕过滤器能够在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)中的过滤器驱动来实现串行通信端口(简称“串口”)的共享功能。在多任务操作系统中,串口资源往往是有限的,...
SUMO交通仿真模型研发:信号控制、边界与高速路控制策略下的车辆编队研究,SUMO交通仿真模型研发:探索信号控制、边界控制与高速路控制下的车辆编队技术,SUMO交通仿真模型研发 (信号控制、边界控制、高速路控制、...
SUMO交通仿真模型研发:深入探究信号控制、边界与高速路控制及车辆编队技术,SUMO交通仿真模型研发 (信号控制、边界控制、高速路控制、车辆编队) ,SUMO交通仿真模型研发;信号控制;边界控制;高速路控制;车辆...
在上面的示例代码中,我们可以看到,作者使用了 Spring 的声明式事务来控制事务边界。但是,在执行测试方法时,事务竟然没回滚,这是因为作者在配置文件中没有正确地配置事务管理器。 在 Spring 中,事务管理器是...
然后,提出了用于观测干扰的新时间变化干扰观测器,并利用模糊逻辑控制调节边界的滑动层厚度来减小振动。研究展示了MATLAB仿真结果,证明新的控制系统能够有效消除扰动并且追踪误差非常小,收敛稳定条件得到了满足。...
2. **声明事务边界**:在需要事务控制的方法上添加@Transactional注解,指定事务的传播行为、隔离级别、读写模式等属性。 3. **创建事务代理**:对于需要事务控制的业务服务,使用TransactionProxyFactoryBean创建...
UDF ,边界条件,主要是用UDF来改变边界条件,以此调节输出值,这是个改变温度的输出。
车辆轨迹规划与运动控制matlab脚本程序设计,基于动态规划算法DP的动态障碍物的轨迹规划,得到可行的行驶轨迹边界范围,然后利用边界作为约束条件指导底层运动控制设计,基于非线性模型预测控制器对车辆运动控制设计...
文章主要聚焦于利用滑模控制(Sliding Mode Control,简称SMC)结合边界层技术(Boundary Layer Method,简称BL)来改进传统的机器人控制方法,并提出了一种新颖的控制方法,即滑模边界层控制(SMCBL),以解决...
在本主题中,“变边界层的滑膜控制simulink+手写笔记”是关于如何利用Simulink来实现这一控制算法的一个实例,用于跟踪期望轨迹。Simulink是MATLAB的一个扩展工具箱,它允许用户通过图形化界面构建和仿真动态系统的...
7. **事物边界**:理解事务边界是确保事务正确性的关键。事务开始于@Transactional注解的方法的入口,结束于方法的返回。在此期间的所有数据库操作都将在同一个事务中进行。 8. **事务同步**:Spring提供了...
通过以上分析可以看出,在设计医院预约挂号系统时,合理利用边界类、控制类和实体类的概念,不仅可以帮助我们更好地理解系统的架构,还能有效地指导后续的开发工作。此外,通过绘制B-C-E包图、顺序图和协作图等UML...
在Spring框架中,为了管理和控制Hibernate事务,Spring提供了两种关键工具:HibernateTemplate和JdbcTemplate。这两个模板类简化了与数据库的交互,同时也处理了事务管理。让我们深入了解一下这两个类以及它们如何...
总的来说,通过对称边界条件的巧妙利用,我们可以有效地解决那些具有对称性的电磁场问题,这对于理解和模拟电磁设备如变压器、电机、电磁阀等的性能具有重要意义。在进行Comsol模型设置时,一定要充分考虑物理问题的...
本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将详细讨论相关知识点。 首先,事务传播行为是指当一个被@Transactional注解的方法被另一个@...
高等学校专业教材《数值分析》第96页例8-2的例子,利用自由边界三次样条函数拟合函数