- 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代理机制学习总结
Proxy相关概念:1.1 OCP原则?在面向对象领域,有一个很著名的原则:OCP(Open-Closed?Principle),它的核心含意是:一个好的设计应该能够容纳新的功能需求的增加,但是增加的方式不是通过修改又有的模块(类),而是通过增加新的模块(类)来完成的,也就是在设计的时候,所有软件组成实体包括接口,函数,函数等必须是可扩展但不可修改的。如果一个设计能够遵循OCP,那么就能够有效的避免上述的问题。?1.2代理:在面向方面编程过程中,当需要对所有类进行某种操作(如,安全性检查,记录操作日志)时,考虑到OCP原则,我们不能在所有实现类中直接添加某些相关方法,这样一旦需求改变将引起很多麻烦和大量修改性的工作。又考虑到我们所要进行的对于所有类的操作与实现类的具体实现存在正交关系(即二者完全不相关,在功能上不存在“相互”依赖关系)。因此提供代理类,对目标类(接口的真正实现类)进行代理,并在代理类中添加相关附加操作。1.3 AOP中的术语Cross cutting concern:横向切入关注点:与具体实现类功能不相关的服务(如,安全性检查,记录操作日志),该服务会散布在代码的各个角落。Aspect:切面,在AOP中将散布在代码的各个角落的服务总结起来形成一个具体的类,即对横切关注点进行模块化,模块化的类称为“切面”类。Advice:对横切性问题的具体实现方法。Pointcut:指定Advice的应用范围(及应用到哪些目标方法上)Weave:将Aspect应用到目标对象上的过程叫做织入Joinpoint:连接点,Aspect应用的地方,即代理对象的实现(advice)的执行点。Target Object:目标对象,真实的实现类。Proxy:Spring的AOP采用代理机制实现,默认采用JDK的动态代理。Introduction:可以为类动态添加方法。1.4 在Spring中AOP主要靠Proxy代理机制来完成。静态代理实现代码UserManager.javaClient.javaUserManagerImpl.javaUserManagerImplProxy.java动态代理实现代码(JDK动态代理)UserManager.javaClient.javaUserManagerImpl.javaSecurityHandler.java创建代理的步骤和注意事项:目标对象必须继承接口,JDK才能代理2. 声明targetObject目标对象的作用:创建动态代理需要用到目标对象相关信息(ClassLoader和interface)3. 相关说明1)通过代理对象,调用目标方法时,默认调用invoke()方法,因此可在invoke()方法中进行相关服务操作,其次调用目标对象的真实实现(由于有些实现有返回值,有些没有,因此需要声明Object类型的返回值变量)2)可以对目标对象的真实实现进行异常拦截。3)调用真实实现:method为被调用方法,当调用实现时,method就被获取了,method.invoke(目标对象,参数)。4)真实实现无返回值,method.invoke()则返回null。有返回值,则为具体返回值。5)代理对象与目标对象的接口一致。可以再invoke()中配置,判断是否对method进行某项服务。Srping注解方式实现动态代理UserManager.javaClient.javaUserManagerImpl.javaSecurityHandler.javaapplicationContext.xml采用注解方式进行动态代理的步骤:定义@Aspect定义@Pointcut,Pointcut下的方法名就是Pointcut的名称,此方法不能有返回值和参数,该方法只是一个标识。Pointcut的内容是一个表达式,描述适用哪些对象的哪些方法,即订阅Joinpoint定义Advice,标明在哪个Pointcut(切入点),何处(Before,after等等)织入此方法。如,@Before(”方法名”);将Aspect和目标对象配置到IOC容器里使用annotation,必须启用对annotation的支持引入/schema/aop/spring-aop-3.1.xsdaop:aspectj-autoproxy/,启用支持需要使用Spring管理的对象都必须在applicationContext.xml中配置bean要获取对象,要先获得BeanFactoryBeanFactory factory = newClassPathXmlApplicationContext(applicationContext.xml);UserManageruserManager = (UserManager)factory.getBean(user
您可能关注的文档
最近下载
- 河南省2019年对口升学网络选择和判断题.docx VIP
- 兴陇中学七年级语文期中复习《骆驼祥子》单选题.docx VIP
- 2025至2030年中国电站铸锻件市场分析及竞争策略研究报告.docx
- 2025年湖南选调真题及答案.docx VIP
- 防范电信网络诈骗宣传课件 PPT.pptx VIP
- 第4课 直面挫折 积极应对中职思想政治《心理健康与职业生涯》(高教版基础模块).pdf VIP
- 广西书院文化研讨.pdf VIP
- 高考古代文化常识判断题(一).docx VIP
- 前十题单选,后十题多选,每题5分,满分100分。.docx VIP
- 12K101-1~4 通风机安装(2012年合订本).pdf VIP
文档评论(0)