拦截器的作用原理:

声明拦截器,加@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拦截器的一些基本的认识。

最新文章

  1. Android之DOM解析XML
  2. GridView数据格式化
  3. WebApi传参总动员(五)
  4. IE的浏览器模式和文档模式
  5. WP8 调用特定API权限不足
  6. 《摇滚南京》——&quot;人生下来就是孤独&quot;
  7. JNI中使用cl命令生成DLL文件
  8. 大数据系列修炼-Scala课程05
  9. PostgreSQL 序列使用
  10. HttpWebRequest 抓取页面异常处理办法
  11. SDN期末作业
  12. 四。Hibernate 使用MAVEN工具
  13. 南大算法设计与分析课程OJ答案代码(3)
  14. 【CQOI2012】局部极小值
  15. 转载 -- CSS3 中关于 select 下拉列表的样式
  16. go 多维度 Map 的数据存取
  17. Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)
  18. hbase hbck命令
  19. PySpark理解wordcount.py
  20. SELECT控件add方法 ie 类型不匹配

热门文章

  1. 时间转换 BASIC-14
  2. 面试官:实现一个带值变更通知能力的Dictionary
  3. pthread_cleanup_push与pthread_cleanup_pop的理解
  4. 阿里云NAS文件迁移项目实践
  5. 000 PCI Express协议入门指南目录
  6. SQL 练习16
  7. 消除不受信任的HTML (来防止XSS攻击)
  8. 【转】ps命令详解与使用
  9. Contos 7.x 中Docker安装以及使用
  10. IDEA不自动提示仓库中有的包maven