CDI 组件拦截器的使用和学习
2024-08-29 02:11:55
拦截器的作用原理:
声明拦截器,加@Interceptor注解
方法有二:
1)为拦截器添加Qualifier;
2)不添加Qualifier。
为拦截器添加具体的拦截方法,该方法加@AroundInvoke注解
在beans.xml文件中声明拦截器的位置
调用、注入拦截器
方法有二:
1)使用Qualifier声明注入的拦截器;
2)使用注解@Interceptors(xxx.class)来声明注入的拦截器。
拦截器的使用配置:
添加@interceptor注解:
package cn.edu.sdut.r314; import java.io.Serializable;
import java.util.Date; import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext; @Interceptor
public class MyInterceptor implements Serializable {
public MyInterceptor() { }
}
添加具体实现方法:@Aroundlnvoke注解:
@AroundInvoke
public Object doMy(InvocationContext ctx) throws Exception {
System.out.println("MyInterceptor is called at: " + new Date());
return ctx.proceed();
}
}
在beans.xml文件中声明该拦截器:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<interceptors>
<class>cn.edu.sdut.r314.MyInterceptor</class>
</interceptors>
</beans>
调用 和注入拦截器:
package cn.edu.sdut.r314; import javax.inject.Named;
import javax.interceptor.Interceptors; /**
*
* @author gaoziqiang
*/
@Named
public class RoomController { /**
* 订房
* @return
*/
public void checkin(){
System.out.println("checkin room......");
} /**
* 退房
* @return
*/
//拦截器注入方式一
//@My
//拦截器注入方式二
@Interceptors(MyInterceptor.class)//表示拦截器所在的类
public void checkout(){
System.out.println("checkout room......");
} }
以上就是对CDI拦截器的一些基本的认识。
最新文章
- Android之DOM解析XML
- GridView数据格式化
- WebApi传参总动员(五)
- IE的浏览器模式和文档模式
- WP8 调用特定API权限不足
- 《摇滚南京》——";人生下来就是孤独";
- JNI中使用cl命令生成DLL文件
- 大数据系列修炼-Scala课程05
- PostgreSQL 序列使用
- HttpWebRequest 抓取页面异常处理办法
- SDN期末作业
- 四。Hibernate 使用MAVEN工具
- 南大算法设计与分析课程OJ答案代码(3)
- 【CQOI2012】局部极小值
- 转载 -- CSS3 中关于 select 下拉列表的样式
- go 多维度 Map 的数据存取
- Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)
- hbase hbck命令
- PySpark理解wordcount.py
- SELECT控件add方法 ie 类型不匹配