xml实现的spring-aop
2021-06-29 02:05
标签:java location rem 1.0 int cut 匹配 size ret 接口: 实现: 切面类1: 切面类2: 配置:aop2.xml 测试: 结果:
xml实现的spring-aop 标签:java location rem 1.0 int cut 匹配 size ret 原文地址:https://www.cnblogs.com/kill-9/p/9648207.html 1 package spring.aop2;
2
3 public interface Arithmetic {
4
5 Integer add(Integer a, Integer b);
6 Integer sub(Integer a, Integer b);
7 Integer div(Integer a, Integer b);
8
9
10 }
1 package spring.aop2;
2
3 import org.springframework.stereotype.Component;
4
5 @Component
6 public class ArithmeticImpl implements Arithmetic {
7
8 @Override
9 public Integer add(Integer a, Integer b) {
10 System.out.println("add -> "+(a+b));
11 return a+b;
12 }
13
14 @Override
15 public Integer sub(Integer a, Integer b) {
16 System.out.println("sub -> "+(a-b));
17 return a-b;
18 }
19
20 @Override
21 public Integer div(Integer a, Integer b) {
22 System.out.println("div -> "+(a/b));
23 return a/b;
24 }
25
26
27 }
1 package spring.aop2;
2
3 import org.aspectj.lang.JoinPoint;
4 import org.aspectj.lang.annotation.*;
5 import org.springframework.core.annotation.Order;
6 import org.springframework.stereotype.Component;
7
8 import java.util.Arrays;
9 import java.util.List;
10
11
12 public class aspect {
13
14
15 public void beforeMethod(JoinPoint joinPoint){
16 String methodName = joinPoint.getSignature().getName();
17 List
1 package spring.aop2;
2
3 import org.aspectj.lang.JoinPoint;
4 import org.aspectj.lang.annotation.Aspect;
5 import org.aspectj.lang.annotation.Before;
6 import org.springframework.core.annotation.Order;
7 import org.springframework.stereotype.Component;
8
9 import java.util.Arrays;
10
11 public class VliAspect {
12
13 public void validateArgs(JoinPoint joinPoint){
14
15 System.out.println("validateArgs -> "+ Arrays.asList(joinPoint.getArgs()));
16 }
17 }
1 xml version="1.0" encoding="UTF-8"?>
2 beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:p="http://www.springframework.org/schema/p"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xmlns:aop="http://www.springframework.org/schema/aop"
7 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
9 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
10
11
12 aop:aspectj-autoproxy proxy-target-class="true" />
13
14
15 bean id="arithmeticImpl" class="spring.aop2.ArithmeticImpl"/>
16
17
18 bean id="vliAspect" class="spring.aop2.VliAspect"/>
19 bean id="aspect" class="spring.aop2.aspect"/>
20
21
22 aop:config>
23
24 aop:pointcut id="pointcut" expression="execution(* spring.aop2.*.*(..))"/>
25
26 aop:aspect ref="aspect" order="2">
27 aop:before method="beforeMethod" pointcut-ref="pointcut"/>
28 aop:after method="afterMethod" pointcut-ref="pointcut"/>
29 aop:after-throwing method="afterThrowing" pointcut-ref="pointcut" throwing="e"/>
30 aop:after-returning method="afterReturning" pointcut-ref="pointcut" returning="result"/>
31
32 aop:aspect>
33 aop:aspect ref="vliAspect" order="1">
34 aop:before method="validateArgs" pointcut-ref="pointcut"/>
35 aop:aspect>
36 aop:config>
37
38
39
40 beans>
1 package spring.aop2;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.ClassPathXmlApplicationContext;
5
6 public class Main {
7
8 public static void main(String[] args){
9
10 ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:aop2.xml");
11 Arithmetic proxy = ac.getBean("arithmeticImpl",ArithmeticImpl.class);
12 proxy.add(3,5);
13 System.out.println("-----------------------");
14 proxy.sub(3,0);
15 System.out.println("-----------------------");
16 proxy.div(3,0);
17 System.out.println("-----------------------");
18 }
19 }