javaaop使⽤的简单⼩例⼦
例⼦是通过springboot项⽬内的⾃定义注解的⽅式,通过⾃定义注解来使⽤aop对需要执⾏的⽅法做⼀些操作的,废话不多说直接上代码1.⾸先l⽂件⾥添加aop的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.4.4</version>
</dependency>
2.在Application类上开启注解
@SpringBootApplication
@ComponentScan(basePackages ="com")
@Transactional
//开启aspect 默认未false使⽤jdk的动态代理 true表⽰使⽤cglib动态代理
@EnableAspectJAutoProxy(proxyTargetClass =true)
public class BxApplication {
public static void main(String[] args){
SpringApplication.run(BxApplication.class, args);
}
}
3.编写⾃定义注解类,如果想在哪个⽅法上使⽤aop,直接在⽅法上声明该注解便可
//METHOD声明在⽅法上使⽤
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Doc {
}
4.编写aop类
@Component
@Aspect
public class Aops {
//声明切⼊点,@Doc⾃定义注解出现在哪个⽅法上就对哪个⽅法⽣效
@Pointcut("@annotation(com.a1.aop.Doc)")
private void pointcut(){
}
/
/前置通知,⽅法执⾏前通知
@Before("pointcut()")
private void befor(){
System.out.println("befor执⾏了");jdk怎么使用
}
//后置通知,⽅法执⾏后通知
@After("pointcut()")
private void after(){
System.out.println("after执⾏了");
}
//环绕通知,在⽅法执⾏前有提⽰,在⽅法执⾏后有提⽰
@Around("pointcut()")
private Object around(ProceedingJoinPoint point)throws Throwable {
System.out.println("around执⾏了");
Object result = point.proceed();
System.out.println("around结束了");
return result;
}
}
5.编写测试类,本例⼦是编写了⼀个Controller层
@Controller
@RequestMapping("/con")
public class TestController {
@RequestMapping("/aop")
//⾃定义注解
@Doc
public void test(){
System.out.println("我就是要执⾏的⽅法");
}
}
7.结果是:
8.⼩例⼦总结:
可以看出环绕通知是⽅法执⾏前和执⾏后都有通知提⽰,并且开始前的通知在前置通知之前,结束后的通知在后置通知之后,可以根据实际情况选择需要的通知⽅法。
有写的不清楚的地⽅还请⼤家不吝赐教,共同探讨、共同学习、共同成长!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论