AOP配置
来源:互联网 发布:金和软件官网 编辑:程序博客网 时间:2024/06/03 14:21
一、 XML风格 = 采用声明形式实现Spring AOP
前置通知:------org.springframework.aop.MethodBeforeAdvice
后置通知:-------org.springframework.aop.AfterReturningAdvice
环绕通知:-------org.aopalliance.intercept.MethodInterceptor
异常通知:-------org.springframework.aop.ThrowsAdvice
底层用的是反射:
说明:四选一
* <pre class="code">public void afterThrowing(Exception ex)</pre>
* <pre class="code">public void afterThrowing(RemoteException)</pre>
* <pre class="code">public void afterThrowing(Method method, Object[] args, Object target, Exception ex)</pre>
* <pre class="code">public void afterThrowing(Method method, Object[] args, Object target, ServletException ex)</pre>
配置方式:
在applicationContext.xml中配置:
<!--配置目标对象 --><bean id="factory" class="com.neuedu.demo.Factory"></bean><!--配置增强对象 --><bean id="before" class="com.neuedu.demo.Before"></bean><bean id="after" class="com.neuedu.demo.After"></bean><bean id="around" class="com.neuedu.demo.Around"></bean><bean id="throws" class="com.neuedu.demo.Throws"></bean><!--配置代理对象 --><bean id="proxyFactory" class="org.springframework.aop.framework.ProxyFactoryBean"><!-- 植入目标对象 --><property name="target" ref="factory"></property><!--植入增强对象的名字 --><property name="interceptorNames" value="before,after,around,throws"></property><!-- 如果是面向接口需要配置目标对象的接口 --><property name="proxyInterfaces" value="com.neuedu.demo.Ifactory"></property><!--如果不是面向接口开发需要配置optimize --><!-- <property name="optimize" value="true"></property> --></bean>
首先,导入jar包
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.10</version></dependency>
1.创建factory实体类
public class Factory implements Ifactory{@Overridepublic void productA() {int k=10/0;System.out.println("生产A");}@Overridepublic void procuctB() {System.out.println("生产B");}@Overridepublic void procuctC() {System.out.println("生产C");}}2.创建接口类Ifactory
package com.neuedu.demo;public interface Ifactory {public void productA();public void procuctB();public void procuctC();}3.创建代理对象
package com.neuedu.demo;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class ProxyFactory {@Before("execution(* productA(..))")//*代表所有返回值类型(..)代表所有的参数类型public void before() {System.out.println("前置通知");}@AfterReturning("execution(* productA(..))")public void after() {System.out.println("后置通知");}@Around("execution(* productA(..))")public void around(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println("环绕前");joinPoint.proceed();System.out.println("环绕后");}}注意:
@AfterReturning("execution(* productA(..))"):只有在成功返回之后才会执行后置重置
@After("execution(* productA(..))"):无论是否成功返回都会执行后置通知
4.在applicationContext.xml中配置
<!--配置自动代理 --><aop:aspectj-autoproxy></aop:aspectj-autoproxy><!--配置目标对象 --><bean id="factory" class="com.neuedu.demo.Factory"></bean><!--配置代理对象 --><bean id="proxyFactory" class="com.neuedu.demo.ProxyFactory"></bean>
阅读全文
0 0
- aop配置
- 配置AOP
- AOP配置
- AOP配置
- jms事务aop配置
- Spring AOP事务配置
- jboss aop配置
- spring2.0 aop配置
- spring aop配置2
- Spring AOP配置选项
- spring的AOP配置
- spring aop 事务配置
- spring aop 配置
- Spring的AOP配置
- spring AOP零配置
- Spring MVC 配置 AOP
- Spring的AOP配置
- Spring的AOP配置
- 从1.5k到18k, 一个程序员的5年成长之路
- [解题报告] NOIP 2014 提高组Day2试题
- Java的字符类String、StringBuffer与StringBuilder异同对比分析
- loj 6062 (hall定理+ 线段树)
- nginx(2)变量转载自章亦春
- AOP配置
- Hibernate学习(二)
- eclipse新建.dic文件注意——由使用IKAnalyzer分词器新建ext.dic文件引发的思考
- 登录请求超时,后台跳转登录页面时,是在子界面显示登录页面的问题
- rapidjson对Writer的小小封装,方便使用
- 南通青鸟 IT教育..._业务抽象
- 求1*2*3*4*...*n的值
- 使用d3画横向组织架构图,兼容ie8 (二)
- java 内存的监控