0.前期准备
0.1:项目结构:
0.2: 导入依赖
https://blog.csdn.net/m0_47306534/article/details/115269906
1.创建UserDao
package com.zyq.dao;
public class UserDao
{
public String queryUser()
{
System.out.println("查询完成");
return "HT";
}
}
2.使用代理UserAspect
package com.zyq.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
@Aspect
public class UserAspect {
// 前置通知:
@Before(value = "UserAspect.pointcut()")
public void before()
{
System.out.println("前置通知===========");
}
// 后置通知:
@After(value = "UserAspect.pointcut()")
public void after() {
System.out.println("后置通知============");
}
// 环绕通知:
//环绕通知抛出异常
@Around(value = "UserAspect.pointcut()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("环绕前通知==========");
Object obj = joinPoint.proceed();
System.out.println("环绕后通知==========");
return obj;
}
// 异常抛出通知:
@AfterThrowing(value = "UserAspect.pointcut()", throwing = "e")
public void afterThrowing(Throwable e) {
System.out.println("异常抛出通知=========" + e.getMessage());
}
//返回通知
@AfterReturning(value = "UserAspect.pointcut()", returning = "result")
public void afterReturning(Object result) {
System.out.println("返回通知==========");
System.out.println("查询的结果是:"+result);
}
// 切入点的注解:
@Pointcut(value = "execution(* com.zyq.dao.UserDao.*(..))")
private void pointcut() {
}
}
3.注册组件
<?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--1.注册组件,代理-->
<bean id="userDao" class="com.zyq.dao.UserDao"></bean>
<bean id="userAspectA" class="com.zyq.aspect.UserAspect"></bean>
<aop:aspectj-autoproxy/>
</beans>
4.测试
import com.zyq.dao.UserDao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void selet(){
ApplicationContext ioc=new ClassPathXmlApplicationContext("aop.xml");
UserDao userDao=(UserDao) ioc.getBean("userDao");
userDao.queryUser();
}
}
5.结果输出
到此结束
GJS纯洁
ps :博主打球崴脚了,受伤了不得不断更