Spring切面二使用注解
【摘要】
package com.IC; public interface PhoneBiz { public void buyPhone(int num); //购买手机; public void salePhone(int num); //销售手机}
JAVA就业套餐课:https://edu.csdn.net/combo/detail/1...
package com.IC;
public interface PhoneBiz {
public void buyPhone(int num); //购买手机;
public void salePhone(int num); //销售手机
}
JAVA就业套餐课:https://edu.csdn.net/combo/detail/1230
package com.bean;
import com.IC.*;
public class PhoneBizImpl implements PhoneBiz {
public void buyPhone(int num) {
System.out.println("购买手机"+num);
}
public void salePhone(int num) {
System.out.println("销售手机"+num);
}
}
package com.bean;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.tagext.TryCatchFinally;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class LogAspect {
/*切入点*/
@Pointcut("execution(void *Phone(int))")
public void p1(){}
@Before("p1()")
public void before(JoinPoint jp)throws Throwable{
Object[]args=jp.getArgs(); //目标方法所有参数;
String methodName=jp.getSignature().getName(); //获得目标方法名称;
if("buyPhone".equals(methodName)){
System.out.println(currentTime()+"即将执行进货操作,数量为:"+args[0]);
}
if("salePhone".equals(methodName)){
System.out.println(currentTime()+"即将执行销售操作,数量为:"+args[0]);
}
}
@AfterReturning("p1()")
public void afterReturing(JoinPoint jp)throws Throwable{
String methodName=jp.getSignature().getName();
if("buyPhone".equals(methodName)){
System.out.println(currentTime()+"进货完毕");
}
if("salePhone".equals(methodName)){
System.out.println(currentTime()+"销售完毕");
}
}
/*环绕通知*/
@Around("p1()")
public Object after(ProceedingJoinPoint pjp)throws Throwable{
String method=pjp.getSignature().getName();
long begin=System.currentTimeMillis();
System.out.println(currentTime()+":"+method+"方法开始执行,计时开始");
try {
return pjp.proceed();
}finally{
long end=System.currentTimeMillis();
System.out.println(currentTime()+"耗时:"+(end-begin)+"毫秒");
}
}
private String currentTime() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
return sdf.format(new Date());
}
}
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.IC.PhoneBiz;
import com.bean.PhoneBizImpl;
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
PhoneBiz pb=(PhoneBiz) ac.getBean("phoneBiz");
pb.buyPhone(100);
pb.salePhone(40);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 启用注解配置 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- 目标业务对象 -->
<bean id="phoneBiz" class="com.bean.PhoneBizImpl"></bean>
<!-- 日志管理切面 -->
<bean class="com.bean.LogAspect"></bean>
</beans>
文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。
原文链接:aaaedu.blog.csdn.net/article/details/53913514
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)