AOP的实现方式有哪几种?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOP的实现方式有哪几种?相关的知识,希望对你有一定的参考价值。

如题,AOP的实现方式。但我知道2种,JDK动态代理和CGLIB库,貌似还有3种?

常见有三种实现方式:
1.利用代理模式动态的实现AOP,从具体的技术细节又可以分为静态代理,动态代理,CGLIB生成子类代理。
2.使用预编译的方法静态进行代理。
3.使用自定义加载器的方法动态进行代理。
后两种代理都可以代理更多的内容(比如构造函数,静态方法,静态块,final方法,私有方法等)。
参考技术A 据我所知,就两种实现方式,就是楼主所说的JDK动态代理和CGLIB,
所谓其他实现方式应该是JDK动态代理的不同表现形式吧
参考技术B 专业人士还要问人哦,呵呵.看来学无止境啊.

spring面试题

Aspectj开发和AOP传统开发最大的区别是什么
AOP开发中通知类需实现对应的通知接口。
aspectj开发中的通知类可以不实现任何接口,只需定义功能方法即可
aspectj开发通知类型比AOP开发多了最终通知。


传统aop有哪几种通知类型?aspectJ有哪几种通知类型?
传统aop,支持增强advice的通知类型有5种:
1.前置通知 org.springframework.aop.MethodBeforeAdvice 方法before
2.后置通知 org.springframework.aop.AfterReturningAdvice 方法afterReturning
3.环绕通知 org.aopalliance.intercept.MethodInterceptor
方法invoke 参数MethodInvocation.proceed() //执行目标方法
4.异常通知 org.springframework.aop.ThrowsAdvice
5.引介通知
aspectJ
1.前置通知 Before
2.后置通知 AfterReturning
3.环绕通知 Around
4.抛出通知 AfterThrowing
5.引介通知 DeclareParents
6.最终通知After 不管是否异常,该通知都会执行


jdk动态代理与静态代理的区别,jdk动态代理与cglib动态代理的区别?
静态代理,AspectJ实现,将切面代码直接编译到java类文件中
动态代理,将切面代码进行动态织入实现(spring采用,技术为:jdk动态代理 和 CGLIB动态字节码增强技术)
JDK动态代理:在JVM内部动态生成class字节码对象(Class对象),只针对于实现接口的类代理
CGLIB动态代理:(Code Generation Library)开源项目,底层是使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类,也可以为没有实现接口的类代理


属性注入时按名称注入和类型注入的区别?
类型注入:@AutoWired ,根据数据类型注入对象,并且注入的对象需只有一个,否则框架无法识别注入哪个而报错
按名称注入:@AutoWired @Qualifier("name")或者@Resource(name="其他Bean")


jdbcTemplate查询数据的方法是什么,及其区别
//简单查询,返回一条数据一个值
T queryForObject("sql",T.class,参数...)
//复杂查询,返回一条数据,RowMapper中手动封装数据
T queryForObject("sql",RowMapper<T>,参数...)
//查询返回多条数据
List<T> query("sql",RowMapper<T>,参数...)
使用RowMapper的实现类BeanPropertyRowMapper<T>(T.class)可以实现数据自动封装
前提:实体类需提供无参public构造,bean属性名称要与表列名对应

 






































以上是关于AOP的实现方式有哪几种?的主要内容,如果未能解决你的问题,请参考以下文章

java Webservice都有哪几种方式啊,哪种方式比较好啊

38 创建线程有哪几种方式?

有哪几种表的实现方式——4

互联网的接入方式有哪几种?

Mapper 编写有哪几种方式?

javascript实现字符串相加的方式有哪几种