基于注解的AOP配置
开发步骤
1.让UserServiceImpl目标对象呗Spring管理到
@Service("userService") //把该类交给Spring内存中.
public class UserServiceImpl implements UserService {
@Override
public void addUser() {
System.out.println("添加用户信息。。。");
int i = 1 / 0;// 算术异常
}
@Override
public void updateUser() {
System.out.println("用户信息已经发生更改。。。");
}
@Override
public void deleteUserById(int id) {
System.out.println("已经根据指定的"+id+"值删除指定的对象。。。");
}
@Override
public List<Object> queryObject() {
return null;
}
@Override
public int queryTotal() {
return 0;
}
@Override
public List<Object> queryFuzzyLike(String name) {
return null;
}
@Override
public Object queryObjectById(int id) {
return null;
}
}
2.让MyAddvice通知类也被Spring管理到
3.配置切面
…1.配置切入点
…2.把切入点和通知进行绑定形成切面
…3.让当前的MyAdvice通知类标记可以配置的切面的类
@Component("myAdvice")//把他交给Spring内存空间,以便于能在spring内存空间中找到并使用
@Aspect // 让当前的通知类具备有配置有切面的条件
public class MyAdvice {
// 配置切入点.会扫描该包下所有的类.所有的方法
@Pointcut("execution(* com.zhiyou100.service..*.*(..))")
// 此方法名()即为id标识
public void pointCut() {}
// 通知的内容需要往方法存放
@Before("pointCut()")//表示把该同志加入到这个切点的下形成切面
public void before(){
System.out.println("前置通知。。。已经连接上数据库。。。。");
// addUser方法有aop加持之后
// 前置通知。。。已经连接上数据库。。。。
// 添加用户信息。。。
}
/**
* 前置通知 before()
* 后置通知 afterReturning() 如果切入点有异常信息,则会中断
* 异常拦截通知 afterThrowing() 如果切入点中有异常信息,则会植入该方法定义的增强的内容
* 环绕通知 around() 前置通知+后置通知+异常拦截通知
* 最终通知 after() 他不管切入点中是否有异常信息,都会执行该方法定义的增强的内容。
*/
// 后置通知
@AfterReturning("pointCut()")
public void afterReturning() {
System.out.println("后置通知。。。。。可以进行资源释放。。。");
}
// 异常拦截通知
@AfterThrowing("pointCut()")
public void afterThrowing() {
System.out.println("异常拦截通知。。。。。此时切入点中有异常信息。。。。");
}
// 环绕通知
//@Around("pointCut()")
public void around(ProceedingJoinPoint joinPoint){
try {
System.out.println("方法执行前加载信息。。。。。");// 前置通知
joinPoint.proceed(); // Method invoke()
System.out.println("方法执行后释放信息。。。。");// 后置通知
} catch (Throwable throwable) {
System.out.println("异常发生时。。。。执行异常处理。。。。。");// 异常拦截通知
throwable.printStackTrace();
}
}
// 最终通知
@After("pointCut()")
public void after() {
System.out.println("不管方法执行中是否异常。。。我都要释放资源。。。");
}
}
4.开启Spring的AOP注解,在主配置文件中使用
<!--Spring注解需要开启,不开启就无法使用-->
<!--开启Spring支持AOP注解 目的是为了织入通知 完成自动代理-->
<aop:aspectj-autoproxy/>
本文详细介绍了如何在Spring中配置基于注解的AOP,包括让用户服务类和自定义通知类被Spring管理,配置切入点和通知,以及在主配置文件中开启AOP注解支持。通过这些步骤,可以实现方法执行前后、异常处理等不同阶段的增强功能,提供灵活的代码逻辑控制。
1219

被折叠的 条评论
为什么被折叠?



