
EJB学习笔记六(EJB中的拦截器)
发布日期:2025-03-29 16:18:22
浏览次数:6
分类:精选文章
本文共 1793 字,大约阅读时间需要 5 分钟。
今天,我想分享一下关于EJB(Enterprise Java Beans)中的拦截器(Interceptor)实现的探讨。一、拦截器的基本概念听到“拦截器”这个词,听起来并不陌生,尤其是在Servlet规范中,拦截器的概念得到了充分的应用。EJB3也 forn了拦截器的支持,这在本质上实现了轻量级的AOP(面向切面编程)。拦截器的作用是将通用逻辑从具体业务方法中抽离出来,这样可以实现代码的复用。常见的拦截器注解还包括螺旋型的编程方式,对开发者来说是个非常实用的能力。二、EJB中的拦截器实现在EJB中实现拦截器,与Spring中的AOP实现有显著的不同。Spring提供了丰富的注解(如`@Before`、`@AfterReturning`、`@AfterThrowing`等),这些注解允许开发者定义丰富的增强逻辑。而在EJB的实现中,拦截器的功能相对比较有限,仅提供一个`@AroundInvoke`注解进行使用。三、拦截器的定义与应用在EJB中定义拦截器非常简单,只需在拦截器方法上使用`@AroundInvoke`注解即可。以下是完整的拦截器类示例:```javapackage com.Interceptor;import javax.interceptor.AroundInvoke;import javax.interceptor.InvocationContext;public class HelloInterceptor { @AroundInvoke public Object log(InvocationContext ctx) throws Exception { System.out.println("*** HelloInterceptor intercepting"); long start = System.currentTimeMillis(); try { if (ctx.getMethod().getName().equals("SayHello")) { System.out.println("*** SayHello已经被调用! ***"); } if (ctx.getMethod().getName().equals("Myname")) { System.out.println("*** Myname已经被调用! ***"); } return ctx.proceed(); } catch (Exception e) { throw e; } finally { long time = System.currentTimeMillis() - start; System.out.println("用时:" + time + "ms"); } }}
这个拦截器类仅需实现带有InvocationContext
参数的方法,签名必须是public Object XXX(InvocationContext ctx) throws Exception
,就可以实现拦截功能。
四、在实际应用中使用拦截器
在实际应用中使用拦截器,只需在目标EJBBean的类上使用@Interceptors
注解即可。部分方法可以通过@ExcludeClassInterceptors
注解来排除某些特定的拦截器逻辑。需要注意的是,拦截器对于性能有一定的影响,因此在实际应用中需要适当设计并限定拦截器的执行范围。
通过以上内容可以看出,EJB中的拦截器实现相对简单,仅需编写一个符合特定注解格式的拦截器类即可。这种简单易用的拦截器机制为EJB开发提供了灵活的增强能力。
总的来说,创建一个拦截器类非常简单,无需继承特定基类或实现特定接口,只需使用@AroundInvoke
注解即可实现通用方法的拦截。要实现特定的拦截作用,只需针对目标方法或类进行注解即可实现。这个特性使得EJB3的拦截器机制非常灵活且实用。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月25日 17时13分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
#VERDI# 关于Verdi使用的几个常用技巧整理
2023-01-23
@Resource注解的使用
2023-01-23
@ResponseBody 和 @RequestBody
2023-01-23
A + B 九度oj
2023-01-23
A20地址线
2023-01-23
abaqus质量缩放系数取值_ABAQUS的质量缩放
2023-01-23
Accessibility
2023-01-23
08-信息收集之端口收集(总结版)
2023-01-23
15种下载文件的方法&文件下载方法汇总&超大文件下载
2023-01-23
anaconda、python卸载后重装以及anaconda--443
2023-01-23
AWVS工具太顶了,漏洞扫描工具AWVS介绍及安装教程
2023-01-23
CentOS 系列:CentOS 7文件系统的组成
2023-01-23
CSDN----Markdown编辑器
2023-01-23
Docker部署postgresql-11以及主从配置
2023-01-23