- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
spring学习视频笔录
spring06 代理模式 和Aop
----------------------------------------------
1,静态代理
多写一个类,将公共的安全性检查切入到类的各个方法角落
2,动态代理
3,Aop术语:
#横切性关注点,独立的问题
#横切性问题模块化,模块后之后,这个类叫Aspect 如:SecurityHandler
# 横切性关注点的具体实现方法叫Advice,此时的Advice就对应了检查安全性方法
#Advice 分类
Before Advice
after Advice....
#Advice应用到具体方法之前,给出一个范围,切入点,能应用到哪些Joinpoint上,Pointcut
如Pointcut(add*);
#把Advice应用到目标对象的过程叫织入(Weave);
#Joinpoint连接点,执行的点,spring只能是方法,只基于方法的连接点
#Target Object目标对象,
Proxy 代理对象
Introduction 当类有方法时,可以动态加入方法
spring07 Aop实现
-----------------------------------
spring 对Aop的支持(采用Annotation的方法)
1,Spring 依赖库
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-ommons/commons-ogging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
//拥有强大的Aop功能jar包
* SPRING_HOME/lib/aspectj/*.jar
#给出一个切面类,并告知Spring(可以用配置,可以用nnotation)
Annotation 方式 @Aspect
#定一个pointcut,切入点,Ponintcut的名称,此方法不能有返回值
和参数,这个方法只是一个标示,不做调用
Annotation 方式 @Pointcut(execution(* add*(..)));
*不管有无返回值全匹配
..不管有无参数
add*所有的Add方法
总的来讲就是所有的add方法不管有不参数,有无返回值的
Pointcut的内容是一个表达式,描述那些对象的哪些方法(订阅Joinpoint)
#声明advice
Annotation 方式 @before
定义Advice,标示在哪个切入点织入此方法
@Before(pointcut方法:上面是allAddMethod)
spring 对Aop的支持(采用静态配置文件的方法)
给出一个切面类,一个目标类
aop:aspect 定义切面
aop:pointcut定义切入点
aop:before指定advice 方法
简单配置实例:
aop:config
aop:aspect id=security ref=securityHandler
aop:pointcut id=allAddMethod expression=execution(*
com.bjsxt.spring.UserManagerImpl.add*(..))/
aop:before method=checkSecurity pointcut-ref=allAddMethod/
/aop:aspect
/aop:config
#spring对Aop的支持
Aspect默认情况下不用实现接口,但对于目标对象,在默认情况下
必须实现接口,如没有实现接口,则需要引入CGLIB库 才可以
JoinPoint 我们可以通过advic中添加一个JoinPoint参数,这个值会
由Spring自动传入,在joinpoint中可以取得参数值,方法名等
1,如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现
AOP
2,如果目标对象实现了接口,我们也可以强制它使用CGLIB实现AOP
3,如果目标没有实现接口,必须采用CGLIB库,spring会在JDK动态代理和CGLIB之间转换
*如何使用CGLIB实现AOP?
步骤:*添加CGLIB库,SPRING_HOME/cglib/*.jar
*在spring配置文件中加入
aop:aspectj-autoproxy proxy-target-class=true/
JDK动态代理和CGLIB字节码生成的区别?
*JDK动态代理只能对实现了接口的类实现动态代理,
文档评论(0)