CDI 拦截器、装饰器与事件机制详解
1. CDI 拦截器概述
在应用开发中,我们常常会遇到一些非核心功能的正交服务,例如特定方法调用时的自定义日志记录。日志记录是一个典型的横切关注点,多个 Bean 可能都需要这个功能。如果在 Bean 的方法中大量添加日志消息,不仅会使代码变得冗长,还会导致代码重复。因此,我们希望将这些横切关注点抽象出来,在不修改 Bean 代码的情况下为其添加功能,CDI 拦截器就能实现这一需求。
2. 实现 CDI 拦截器的两个部分
实现 CDI 拦截器主要有两个部分:拦截器绑定注解和拦截器 Bean。
- 拦截器绑定注解 :这是拦截器的客户端使用的注解,例如 @Transactional 注解就是事务拦截器的一部分。
- 拦截器 Bean :将注解与实现拦截器方法的 Bean 关联起来。
3. 拦截器注解示例
以 jwallet 应用为例,我们需要在某些方法被调用时记录当前登录用户的姓名、日期和时间。下面是拦截器绑定注解的示例:
@Inherited
@Target({TYPE, METHOD})
@Retention(RUNTIME)
@InterceptorBinding
public @interface Logged {
}
这个 @Logged 注解是一个普通的 Java 注解,使用了 Jakarta Interceptors
超级会员免费看
订阅专栏 解锁全文
73

被折叠的 条评论
为什么被折叠?



