全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Spring 基于 Aspect 注解的增强实现

整理文档,搜刮出一个Spring 基于 Aspect 注解的增强实现的代码,稍微整理精简一下做下分享

定义基本实体类

package com.advice;

/**
 * @author Duoduo
 * @version 1.0
 * @date 2017/4/25 23:41
 */
public class Performer {

  public void doPerform() {
    System.out.println("Performer do perform ....................... ");
  }
}

定义基于注解的增强类

package com.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;

/**
 * @author Duoduo
 * @version 1.0
 * @date 2017/4/25 23:42
 */

@Aspect//定义切面
public class Audience {

  //定义切点
  @Pointcut("execution(* com.advice.Performer.doPerform(..))")
  public void doPerform(){}

  @Before("doPerform()")
  public void takeSeas() {
    System.out.println("The audience is taking their seats.");
  }

  @Before("doPerform()")
  public void turnOffPhone() {
    System.out.println("The audience is turn off their cellphone.");
  }

  @AfterReturning("doPerform()")
  public void applaund() {
    System.out.println("CLAP CLAP CLAP CLAP ...");
  }

  @AfterThrowing("doPerform()")
  public void demandRefund() {
    System.out.println("Boo! we want our money back!");
  }

  @Around("doPerform()")
  public void watchPerfomance(ProceedingJoinPoint joinPoint) {

    try {
      Long start = System.currentTimeMillis();

      joinPoint.proceed();

      long end = System.currentTimeMillis();

      System.out.println("The performance took "+(end-start)+" milliseconds");

    } catch (Throwable throwable) {
      throwable.printStackTrace();
    }


  }
}

Spring 自动代理配置

<!-- aop 增强自动代理 -->
<aop:aspectj-autoproxy/>
<bean id="audience" class="com.advice.Audience"/>
<bean id="performer" class="com.advice.Performer"/>

Junit测试

@Test
  public void testDoPerform() throws Exception {
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:smart-context.xml");
    //代理为指向Interface的代理
    Performer performer = (Performer) context.getBean("performer");

    System.out.println("+++++++++++++++++++++++++++++++++");
    performer.doPerform();
  }

测试结果

+++++++++++++++++++++++++++++++++
2017-04-26 20:51:16,980 DEBUG [main] (AbstractBeanFactory.java:251) - Returning cached instance of singleton bean 'audience'
The audience is taking their seats.
The audience is turn off their cellphone.
Performer do perform ....................... 
The performance took 91 milliseconds
CLAP CLAP CLAP CLAP ...

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # aspect注解  # spring4  # aspect  # 注解 


相关文章: 如何基于云服务器快速搭建网站及云盘系统?  如何在西部数码注册域名并快速搭建网站?  已有域名如何快速搭建专属网站?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何快速使用云服务器搭建个人网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何用腾讯建站主机快速创建免费网站?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  建站之星如何助力网站排名飙升?揭秘高效技巧  宁波自助建站系统如何快速打造专业企业网站?  html制作网站的步骤有哪些,iapp如何添加网页?  建站之星好吗?新手能否轻松上手建站?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何快速生成凡客建站的专业级图册?  微信小程序 五星评分(包括半颗星评分)实例代码  高性能网站服务器配置指南:安全稳定与高效建站核心方案  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何使用Golang table-driven基准测试_多组数据测量函数效率  高性能网站服务器部署指南:稳定运行与安全配置优化方案  简单实现Android验证码  如何获取PHP WAP自助建站系统源码?  C#如何序列化对象为XML XmlSerializer用法  建站之星如何优化SEO以实现高效排名?  如何快速上传建站程序避免常见错误?  如何制作算命网站,怎么注册算命网站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何在Golang中指定模块版本_使用go.mod控制版本号  山东云建站价格为何差异显著?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何在阿里云香港服务器快速搭建网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站制作话术技巧,网站推广做的好怎么话术?  建站主机服务器选型指南与性能优化方案解析  ,交易猫的商品怎么发布到网站上去?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何用虚拟主机快速搭建网站?详细步骤解析  寿县云建站:智能SEO优化与多行业模板快速上线指南  北京的网站制作公司有哪些,哪个视频网站最好?  广东企业建站网站优化与SEO营销核心策略指南  建站之星官网登录失败?如何快速解决?  如何在阿里云域名上完成建站全流程?  建站之星24小时客服电话如何获取?  如何选购建站域名与空间?自助平台全解析  建站主机空间推荐 高性价比配置与快速部署方案解析  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何通过山东自助建站平台快速注册域名?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  网站图片在线制作软件,怎么在图片上做链接? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。