栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【AOP 随笔】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【AOP 随笔】

pom 注解
socpe 指定的范围

Proxy 代理

AOP
ClassLoader classLoader = 接口.class.getClassLoader();
Classinterfaces = new Class[]{接口.class};
InvocationHandler handler = 实现 InvocationHandler(),重写元方法。

//o就是代理类
Object o = Proxy.newProxyInstance(classLoader ,interfaces , handler );

JDk 动态代理,必须保证被代理的类实现了接口,才能用。

cglib 就不需要。

AOP就进行了兼容,有接口用jdk代理。没用接口用cglib代理。
动态选着动态代理的方式。

AOP-----------
切面: 关注点模块化
连接点: 切面和被增强方法的连接点
通知:
切点:切入地点。

begin()
after()
afterException()
afterEnd()

pom依赖
aspectjweaver
spring-aspects

注解
@Aspect 声明切面
@Component

@Before(“execution(*.com…**(…))”)

什么是AOP
JDK动态代理和CGLIB动态代理的区别
如何理解Spring中的代理
解释一下Spring里面的几个名词
execution: 可以匹配到方法

返回值:如果jdk自带的可以不写完整的限定名;自定义的要写完整额限定名。
包名:cn.* 只能匹配一级
cn…* 可以匹配到子孙包

类名:
方法名:
参数: … 点点代码任意参数,否则,要写具体;

within: 只能匹配到类
within(cn.abcdef.service.impl.*)

annotation: 匹配注解

JoinPoint的使用:

@Before(“execution(* cn.xx.service..(…))”)
publlic void before(JoinPoint joinPoint){
String methodName= joinPpint.getSignature().getName();
Object[] atgs = joinPpint.getArgs();
//可以记录方法名和参数
}

// 后置异常通知
@AfterThrowing(value=“pointcut()”,
throwing=“ex”)
public void afterThrowing(Exception ex){
//异常栈固定写法—begin
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw, true));
//异常栈固定写法----end
System.out.println(“后置异常通知”+sw.getBuffer().toString());
}
// 后置返回通知
@AfterReturning(value=“pointcut()”,
returning = “returnValue”)
public void afterReturning(Object returnValue){
System.out.println(“返回值:”+returnValue);
}

声明一个切点,其他地方引用
@Pointcut(“execution(* cn.thuiyaogo.service.impl..(…))”)
public void pointcut(){
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号