Spring+Maven+Aspectj的AOP实现对指定对象的切面拦截
发布日期:2021-05-10 02:13:31 浏览次数:15 分类:精选文章

本文共 3252 字,大约阅读时间需要 10 分钟。

AspectJ���������������������������������

Maven���������������������

pom.xml ������

���������������������������������pom.xml��������������������������������������������������������������������������������� pom.xml ���������

org.springframework
spring-context
5.0.8.RELEASE
org.aspectj
aspectjrt
1.9.1
org.aspectj
aspectjweaver
1.9.1

Spring���AspectJ������

applicationContext.xml ������

������������applicationContext.xml������������Spring���XML������������������������������������������

���������������

Calculator������

���calculator���������������������

package calculator;
public interface Calculator {
int add(int a, int b);
int out(int a, int b);
}

��������� CalculatorImpl

���calculator������������������������������ @Component("calculator1") ���������������������Spring������������

package calculator;
import org.springframework.stereotype.Component;
@Component("calculator1")
public class CalculatorImpl implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int out(int a, int b) {
return a + b;
}
}

���������������������

MyAspect ���������

������������������������ CalculatorImpl ��������������������������������� @Aspect ������������������������������

package calculator.aspect;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyAspect {
@Before("execution(* calculator.CalculatorImpl.add(int, int))")
public void beforeMethod(JoinPoint joinpoint) {
String methodName = joinpoint.getSignature().getName();
Object[] args = joinpoint.getArgs();
System.out.println("���������" + methodName + " ������������" + args);
}
}

���������������

������������

��������������������������������� Spring ApplicationContext���������������������

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AspectTest {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Calculator calculator = applicationContext.getBean("calculator1", Calculator.class);
try {
int result = calculator.add(1, 2);
System.out.println("���������������" + result);
} catch (Exception e) {
System.out.println("���������" + e.getMessage());
}
}
}

������������������

���������������������������������

���������add ������������[1, 2]
���������������3

������

��������������������������������������������� AspectJ ��������������������� Calculator ��������������������������������������������������������������������������������������������������������� @Around ���������������������������

上一篇:Spring的AOP五大通知注解
下一篇:Spring核心技术面向切面编程AOP

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月22日 01时18分05秒