Spring切面二使用注解

举报
tea_year 发表于 2021/12/30 00:17:27 2021/12/30
【摘要】 package com.IC; public interface PhoneBiz { public void buyPhone(int num); //购买手机; public void salePhone(int num); //销售手机} JAVA就业套餐课:https://edu.csdn.net/combo/detail/1...

  
  1. package com.IC;
  2. public interface PhoneBiz {
  3. public void buyPhone(int num); //购买手机;
  4. public void salePhone(int num); //销售手机
  5. }

JAVA就业套餐课:https://edu.csdn.net/combo/detail/1230

 


  
  1. package com.bean;
  2. import com.IC.*;
  3. public class PhoneBizImpl implements PhoneBiz {
  4. public void buyPhone(int num) {
  5. System.out.println("购买手机"+num);
  6. }
  7. public void salePhone(int num) {
  8. System.out.println("销售手机"+num);
  9. }
  10. }

 


  
  1. package com.bean;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import javax.servlet.jsp.tagext.TryCatchFinally;
  5. import org.aspectj.lang.JoinPoint;
  6. import org.aspectj.lang.ProceedingJoinPoint;
  7. import org.aspectj.lang.annotation.AfterReturning;
  8. import org.aspectj.lang.annotation.Around;
  9. import org.aspectj.lang.annotation.Aspect;
  10. import org.aspectj.lang.annotation.Before;
  11. import org.aspectj.lang.annotation.Pointcut;
  12. @Aspect
  13. public class LogAspect {
  14. /*切入点*/
  15. @Pointcut("execution(void *Phone(int))")
  16. public void p1(){}
  17. @Before("p1()")
  18. public void before(JoinPoint jp)throws Throwable{
  19. Object[]args=jp.getArgs(); //目标方法所有参数;
  20. String methodName=jp.getSignature().getName(); //获得目标方法名称;
  21. if("buyPhone".equals(methodName)){
  22. System.out.println(currentTime()+"即将执行进货操作,数量为:"+args[0]);
  23. }
  24. if("salePhone".equals(methodName)){
  25. System.out.println(currentTime()+"即将执行销售操作,数量为:"+args[0]);
  26. }
  27. }
  28. @AfterReturning("p1()")
  29. public void afterReturing(JoinPoint jp)throws Throwable{
  30. String methodName=jp.getSignature().getName();
  31. if("buyPhone".equals(methodName)){
  32. System.out.println(currentTime()+"进货完毕");
  33. }
  34. if("salePhone".equals(methodName)){
  35. System.out.println(currentTime()+"销售完毕");
  36. }
  37. }
  38. /*环绕通知*/
  39. @Around("p1()")
  40. public Object after(ProceedingJoinPoint pjp)throws Throwable{
  41. String method=pjp.getSignature().getName();
  42. long begin=System.currentTimeMillis();
  43. System.out.println(currentTime()+":"+method+"方法开始执行,计时开始");
  44. try {
  45. return pjp.proceed();
  46. }finally{
  47. long end=System.currentTimeMillis();
  48. System.out.println(currentTime()+"耗时:"+(end-begin)+"毫秒");
  49. }
  50. }
  51. private String currentTime() {
  52. SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
  53. return sdf.format(new Date());
  54. }
  55. }

 


  
  1. package com.test;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.IC.PhoneBiz;
  5. import com.bean.PhoneBizImpl;
  6. public class Test {
  7. public static void main(String[] args) {
  8. ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
  9. PhoneBiz pb=(PhoneBiz) ac.getBean("phoneBiz");
  10. pb.buyPhone(100);
  11. pb.salePhone(40);
  12. }
  13. }

 

 


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  11. http://www.springframework.org/schema/aop
  12. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
  13. <!-- 启用注解配置 -->
  14. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
  15. <!-- 目标业务对象 -->
  16. <bean id="phoneBiz" class="com.bean.PhoneBizImpl"></bean>
  17. <!-- 日志管理切面 -->
  18. <bean class="com.bean.LogAspect"></bean>
  19. </beans>

 

 

 

 

 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/53913514

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。