1.环绕通知
环绕通知是一种提供自由灵活对核心类方法进行增强的操作方法,首先还是在核心配置中环绕通知
如何进行环绕增强呢
先导好jar包和分层
在service层中创建BookService接口,然后继承接口,接口中编写实现的方法,
public interface BookService {
int save(int n);
}
@Service
public class BookServiceImpl implements BookService {
@Override
public int save(int n) {
System.out.println("添加");
return 1;
}
}
然后创建核心配置文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
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/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--1.扫描component及网名注解-->
<context:component-scan base-package="com.qi"/>
<!--2.开启AOP注解支持-->
<aop:aspectj-autoproxy/>
</beans>
扫描整个文件,然后开启AOP注解
在增强类中编写对谁的增强
/**
* 增强类
*/
@Component
@Aspect
public class Loger {
@Before("execution(* *..BookServiceImpl.*(..))")
public void check(){
System.out.println("前置通知/增强: 执行系统的权限验证");
}
public Object around(ProceedingJoinPoint pjp){
try{
//前置增强
System.out.println("环绕通知/增强:执行系统的权限验证");
//通过ProceedingJoinPoint完成代理对象的方法调用
Object result=null;//定义返回变量
Object[] args=pjp.getArgs();//获取参数行数
result=pjp.proceed(args);//核心类方法
//后置增强
System.out.println("环绕通知---后置增强");
return result;
} catch (Throwable e) {
//异常增强
System.out.println("环绕通知---异常增强");
throw new RuntimeException(e);
}finally {
//最终增强
System.out.println("环绕通知---最终增强");
}
}
}
在Loger类中进行注解
然后测试出结果
@Test
public void test01(){
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
BookService bookService = context.getBean(BookService.class);
bookService.save(5);
}
}