作者:米五仔8 | 来源:互联网 | 2023-06-01 18:14
1. spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能 有注解
1.1 引入 xmlns:context
2. @Component
2.1 相当于
2.2 如果没有参数,把类名首字母变小写,相当于
2.3 @Component(“自定义名称”)
3. 实现步骤:
3.1 在 spring 配置文件中设置注解在哪些包中
3.2 在 Demo 类中添加@Componet
3.2.1 在方法上添加@Pointcut(“”) 定义切点
@Component
public class Demo {@Pointcut("execution(* com.bjsxt.test.Demo.demo1())")public void demo1() throws Exception{System.out.println("demo1");}
}
3.3 在通知类中配置
3.3.1 @Component 类被 spring 管理
3.3.2 @Aspect 相当于表示通知方法在当前类中
@Component
@Aspect
public class MyAdvice {@Before("com.bjsxt.test.Demo.demo1()")public void mybefore(){System.out.println("前置");}@After("com.bjsxt.test.Demo.demo1()")public void myafter(){System.out.println("后置通知");}@AfterThrowing("com.bjsxt.test.Demo.demo1()")public void mythrow(){System.out.println("异常通知");}@Around("com.bjsxt.test.Demo.demo1()")public Object myarround(ProceedingJoinPoint p) throws Throwable{System.out.println("环绕-前置");Object result = p.proceed();System.out.println("环绕-后置");return result;}
}
注意:再配置文件中还需加入
本质是使用了cglib动态代理,需要导入cglib的jar包(MyBatis中的lib目录下有)