当前位置: 首页 > news >正文

文明网站建设培训体会企业登记信息查询系统

文明网站建设培训体会,企业登记信息查询系统,印章在线制作软件,山东省住房和城乡建设厅注册中心网站在这之前我们已经介绍了AOP的基本功能和概念#xff0c;那么当AOP集成到spring则会发生改变。Spring AOP 中的Joinpoint#xff1a;之前提高了很多Joinpoint的类型#xff0c;但是在spring中则只会有方法级别的Joinpoint#xff0c;像构造方法#xff0c;字段的调用都没适…在这之前我们已经介绍了AOP的基本功能和概念那么当AOP集成到spring则会发生改变。Spring AOP 中的Joinpoint之前提高了很多Joinpoint的类型但是在spring中则只会有方法级别的Joinpoint像构造方法字段的调用都没适配。原因是Spring框架一直追求轻量级和高效而仅仅采用方法级的Joinpoint即可满足百分之八十的需求。同时如果采用类中的属性级别的Joinpoint则会破坏对象的封装。如果需求非常特殊超过了拿百分之八十的需求那么不妨可以使用AspectJ的方式。Spring AOP 中的PointcutSpring中以接口定义Pointcut作为其最顶层的抽象接口该接口定义了两个方法用来帮助捕获系统中相应的Joinpoint两个方法的ClassFilter和MethodMatcher分别是用来匹配将执行织入操作的对象以及相应的方法。也就是说ClassFilter是对于类型对象的匹配而MethodMatcher则是对于方法级别的匹配MethodMatcher的复杂度相比于ClassFilter要高。原因是ClassFilter仅仅只需要匹配类型即可而MethodMatcher则可能需要匹配方法名称或者方法名称参数因此对于MethodMatcher则有多个方法进行匹配有两个matches的方法而这两个方法的分界线就是isRuntime方法。在对具体的方法进行拦截的时候可以忽略每次方法执行的时候调用者传入的参数也可以每次都检查这些方法调用参数以强化拦截条件都是与isRuntime的返回值有关如果返回值为false则会触发第一个matches方法这种属于不会考虑具体方法的参数而如果返回结果为true则会调用第二个matches方法表示采用参数的匹配将这两个MethodMatcher类型分为StaticMethodMatcher和DynamicMethodMatcher类型。StaticMethodMatcher类型则是无参数检查这种无需参数检查的类型可以缓存在框架内部同时性能比较出色对于DynamicMethodMatcher类型是参数检查因此不会进行缓存操作同时性能上相比StaticMethodMatcher则是损耗很大。常见的PointCut下面我们来介绍几个常见的PointCutNameMatchMethodPointcut这个是最简单的Pointcut实现属于StaticMethodMatcher的子类可以根据自身指定的一组方法名称与Joinpoint处的方法的名称进行匹配JdkRegexpMethodPointcut和Perl5RegexpMethodPointcutStaticMethodMatcher的子类有一个专门基于正则表达式的实现分支而JdkRegexpMethodPointcut和Perl5RegexpMethodPointcut则是不同类型的正则表达式的具体实现。AnnotationMatchingPointcut根据目标对象中是否存在指定类型的注解来匹配Joinpoint要使用该类型的Pointcut首先需要声明相应的注解。CompossablePointcut提供逻辑运算功能而ComposablePointcut就是Spring AOP提供的可以进行Pointcut逻辑运算的Pointcut实现。它可以实现Pointcut之间的并以及交运算。ControlFlowPointcutControlFlowPointcut则是最特殊的Pointcut类型在理解和使用上都需要我们多付出点脑细胞ControlFlowPointcut匹配程序的调用流程不是对某个方法执行所在的Joinpoint处的单一特征进行匹配。通过ControlFlowPointcut我们可以实现指定只有当某个类的方法在被执行的类对象调用的时候才会对方法进行拦截处理Spring AOP中的AdviceAdvice实现了将被织入到Pointcut规定的Joinpoint处的横切逻辑。在spring中advice按照其自身实例能否在目标对象类的所有实例中共享这一标准可以划分为两大类即per-class类型的advice和per-instance类型的advice。per-class类型的Adviceper-class类型的Advice是指该类型的实例可以在目标对象类的所有实例之间进行共享这种类型的Advice只是提供方法拦截的功能不会为目标对象类保存任何状态或者添加新的特性。那么per-class有着以下几种类型Before advice实现的横切逻辑将在相应的Joinpoint之前执行在Before advice执行完成之后程序执行流程将从Joinpoint处继续执行所以Before Advice通常不会打断程序执行的流程但是如果有必要也可以通过抛出相应异常的形式中断程序流程ThrowsAdvicethrowsAdvice通常用于对系统重特定的异常情况的监控以统一的方式对所发生的异常进行处理一旦捕获到异常需要马上以某种方式通知系统的监控或者运营人员AfterReturningAdvice通过spring的AfterReturningAdvice我们可以访问当前joinpoint的方法返回值方法方法参数以及所在的目标对象Around AdviceSpring AOP没有提供AfterAdvice使得我们没有一个合适的advice类型来承载类似于系统资源清除之类的横切逻辑。Spring AOP的AfterReturningAdvice不能更改Joinpoint所在方法的返回值使得我们在方法正常返回后无法对其进行更多的敢于。有了Around Advice则可以解决这个问题per-instance类型的Advice在Spring AOP当中只有一个类型的per-instance型Advice就是IntroductionIntroductionIntroduction允许你在不修改目标类代码的情况下为其动态添加新的接口和实现。这相当于在运行时为目标对象 “混入” 额外的行为使其具备原本没有的功能。 // 定义新接口 public interface Monitorable {void setMonitorActive(boolean active);boolean isMonitorActive(); }// 实现接口和 IntroductionInterceptor public class MonitorInterceptor implements MethodInterceptor, Monitorable {private boolean monitorActive false;Overridepublic Object invoke(MethodInvocation invocation) throws Throwable {if (monitorActive invocation.getMethod().getName().startsWith(get)) {System.out.println(Monitoring: invocation.getMethod().getName());}return invocation.proceed();}Overridepublic void setMonitorActive(boolean active) {this.monitorActive active;}Overridepublic boolean isMonitorActive() {return monitorActive;} }// 创建 IntroductionAdvisor public class MonitorAdvisor extends DefaultIntroductionAdvisor {public MonitorAdvisor() {super(new MonitorInterceptor(), Monitorable.class);} }增强类型作用是否改变类结构Before/After在方法前后添加行为否Around环绕方法执行完全控制调用过程否Introduction为目标对象添加新接口和实现是运行时
http://www.pierceye.com/news/951658/

相关文章:

  • 北京微信网站建设费用知识问答网站开发
  • 网站建设的博客做外国网用哪些网站
  • 网站两侧广告口碑营销的案例及分析
  • 有什么手机网站wordpress 编辑器增加翻译按钮
  • 深圳网站建设企怎样做好公司网站
  • 深圳注册投资公司的条件网络优化推广公司
  • 网站流量统计工具有哪些电子商务网络营销是什么
  • asp+access网站开发实例精讲网站建设开发的主要流程
  • 电子商城开发网站建设做网站推广怎么跟客户沟通
  • 个人网站排名欣赏哪个网站可以做笔译兼职
  • 创建一个网站主页wordpress英文博客主题
  • 天津建站模板搭建电子商务网页设计与网站建设论文
  • 网站空间可以自己做服务器网站环境搭建教程
  • 建一个网站素材哪里来长安城乡建设开发有限公司网站
  • 网站内容由什么组成部分组成微信静首页制作代码
  • 精品课程网站开发平台福建省建设厅网站 保证金
  • 网站后台 不能删除文章贵州建设厅网站首页
  • 重庆市园林建设有限公司网站酒店平台网站建设
  • c 网站开发实例教程超级外链工具 增加外链中
  • ip怎么做网站外贸网站建设哪里好
  • 市网站建设网站排名查询alexa
  • 西安建设网站首页网络互联网推广
  • 百度搜索网站显示图片wordpress 工作室
  • 网站页面模板 建设中集团做网站优势
  • 提供佛山网站制作大连市建设工程集团有限公司
  • 北京网站设计外包公司价格网站怎么备案在哪里
  • 视频网站广告代码网站建设怎么插图片
  • 网站建设需要敲代码吗外贸网站商城
  • wordpress增加网站网页关键词企业网站的需求是什么
  • 口碑好网站建设电话什么是搜索引擎优化用一句话概括