Spring编程<六>
来源:互联网 发布:吉大动物医学就业知乎 编辑:程序博客网 时间:2024/06/05 07:17
Spring编程<六>
接上次AOP的四中方法:第三种 注解形式
使用注解添加,是很简单是,演示一个例子:
第一种方式,注解加在函数上:
@Aspectpublic class MyAdvisor { @Pointcut(value="execution( * cn..Cat.*(..) )") //由Pointcut中的values属性来指定 切点的表达式----aspectj切点语言 public void a(){ } //由通知的value属性指定Pointcut----本例为aa()方法上的切点 @Before(value="a()") public void before(){ System.out.println("...前面拦截.."); } @After(value="a()")//手动添加JoinPoint参数,可以活的被拦截的 连接点的信息 public void after(JoinPoint jp){//缺点,依赖JoinPoint类,因此没必要就不需要 //是否为方法执行,被拦截方法名,被拦截对象 System.out.println("...后面拦截.."+jp.getKind()+","+jp.getSignature()+","+jp.getTarget()); } @Around(value="a()")//around通知的拦截方法,必要依赖jp或p,因为需要放行 public void around(ProceedingJoinPoint p) throws Throwable{ //ProceedingJoinPoint extends JoinPoint System.out.println("前面拦.."+p.getKind()+","+p.getSignature()+","+p.getTarget()); p.proceed();//放行 } @AfterReturning(value="a()") public void afterReturn(){//该方法可以注入ProceedingJoinPoint System.out.println("方法正常返回之后:");//抓异常 } @AfterThrowing(value="a()") public void afterThrowing(){//该方法可以注入ProceedingJoinPoint System.out.println("方法抛出异常之后:");//抛异常 }}
第二种方式:注解添加在变量上:
//切面=切点+通知//@Aspect = @PointCut + (@Before | @After ...)@Aspectpublic class MyAdvisor2 { private final String CUT="execution( * cn..Cat.*(..) )"; @Before(CUT) public void before(){ System.out.println("...前面拦截.."); }}
然后还要在xml中配置:
<!-- 自动代理的标签 --> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <bean id="p1" class="cn.hncu.v3.Person"></bean> <bean id="cat" class="cn.hncu.v3.Cat"></bean> <!-- 基于注解的切面 --><!-- <bean class="cn.hncu.v3.MyAdvisor"></bean> --> <bean class="cn.hncu.v3.MyAdvisor2"></bean>
使用的主要工具类
阅读全文
0 0
- Spring编程<六>
- 【Spring六】JDBC编程之XML配置
- Spring(六)
- spring(六)---aspectj aop编程(注解配置)
- Spring学习(六)-面向切面编程(AOP)
- 六、Spring管理数据源
- 学习Spring笔记六
- Spring+Mina(六)
- spring security(六)
- 初识spring(六)
- 使用Spring(六)集合
- Spring Security教程(六)
- 六.Spring AOP浅析
- Spring Boot学习(六)
- Spring Boot (六) JdbcTemplate
- WebLogic RMI 编程(六)
- 编程修养(六)
- 编程修养(六)
- 《C++ Primer》第五版课后习题解答_第二章(3)(21-29)
- ActoiveMQ主备环境搭建
- UVa1605 例题8-2 联合国大楼(Building for UN,ACM/ICPC NEERC 2007)
- 【stm32f103】USART RX实现(寄存器版)
- 真正理解 git fetch, git pull 以及 FETCH_HEAD
- Spring编程<六>
- GCD & LCM (数学基础)
- 登录验证码的制作!
- JAVAEE之Spring学习(三)---通过aop切面实现事务处理
- js字符操作
- Github 使用 与 Git的链接
- graphviz在linux上的中文乱码问题解决办法
- 《head_first_html_learnning》
- 成为Java顶尖程序员 ,看这11本书就够了