Hello,欢迎来到程序员社区。 今天聊一聊 SpringAop实现,希望对编程电子书汇总大家有所帮助。
Java面试手册PDF下载:点击下载最全Java面试手册
想理解aop比较深之前,可以先阅读aop的一些知识,然后在结合实际操作进行比较深入的理解。
概念
AOP 面向切面编程
实操
1.首先,当然是搭建一个项目啦,可以选择idea快速搭建一个springboot项目
2.想要进行切面肯定要有一个目标对象和切面对象,方便理解我们分别命名为Target和TargetAspect,代码如下:
public class Target {
public Target() {
System.out.println("Target构造方法执行了");
}
public void getup() {
// int a = 40/0;
System.out.println("起床了");
}
public void sleep(){
System.out.println("快该睡觉了");
}
}
@Aspect
public class TargetAspect {
@Pointcut("execution(* com.springaop.demo.Target.*(..))")
public void pointcut() {
}
@Before("pointcut()")
public void st编程电子书汇总art() {
System.out.println("前置通知");
}
@After("pointcut()")
public void end() {
System.out.println("后置通知");
}
@AfterReturning("pointcut()")
public void finished() {
System.out.println("后置返回通知");
}
@AfterThrowing("pointcut()")
public void exception() {
System.out.println("异常通知");
}
/* @Around("pointcut()")
public void around() {
System.out.println("环绕通知");
}*/
}
简单赘述一下,Pointcut是切点,代码角度看是一个表达式,切面通过切点寻找到Target目标对象,@Pointcut(“execution(* com.springaop.demo.Target.*(…))”),里面是目标对象,execution指的是执行哪些对象,是通配符,(…)指的是方法形参,有参无参都可以,()的话就必须是无参方法,修饰pointcut()方法是目标对象执行都会切这一个方法。
3.有了目标对象和切面对象,剩下的就是将这两个类进行实例化,通过bean的形式注入进来,这里我们需要开启*@EnableAspectJAutoProxy**注解,必须加@Bean哦,不然无法被spring所管理,代码如下:
@EnableAspectJAutoProxy
public class Config {
public Config(){
System.out.println("Config构造方法执行了");
}
@Bean
public Target runner() {
return new Target();
}
@Bean
public TargetAspect runAspect() {
return new TargetAspect();
}
}
最后一步就是调用他们啦,代码如下:
@ConfigurJava面试手册ation
public class Main {
public Main(){
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);
Target bean = annotationConfigApplicationContext.getBean(Target.class);
编程电子书汇总 beaJava面试手册n.getup();
}
}
写@Configuration注解是因为,加入了这个注解就会被springboot自动识别,原因是被@SpringBootApplication识别,到此大功告成,加一波效果图:
> 时间不一定能证明很多东西,但是一定能看透很多东西。坚信自己的选择,不动摇,使劲跑,明天会更好。