出处:http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html
经过这段日子的学习和使用Spring,慢慢地体会到Spring的优妙之处,正在深入地吸收Spring的精华,呵呵。现在写的这个只是个简单AOP例子,包括前置通知,后置通知,环绕通知,和目标对象。写这个例子的主要目标只是想让想学AOP的能更快地入门,了解一下如何去配置AOP里面的东东。
目标对象的接口:IStudent.java

/**
2

3

4

package
com.dragon.study;
5

6

/**
7

8

9

10

public
interface
IStudent
{
11

12

13

14

目标类:StudentImpl.java

/**
2

3

4

package
com.dragon.study.Impl;
5

6

import
com.dragon.study.IStudent;
7

8

/**
9

10

11

12

public
class
StudentImpl
implements
IStudent
{
13

14

15

16

17

18

前置通知:BeforeAdvice.java

/**
2

3

4

package
com.dragon.Advice;
5

6

import
java.lang.reflect.Method;
7

8

import
org.springframework.aop.MethodBeforeAdvice;
9

10

/**
11

12

13

14

public
class
BeforeAdvice
implements
MethodBeforeAdvice
{
15

16

17

18

19

20

21

22

23

后置通知:AfterAdvice.java

/**
2

3

4

package
com.dragon.Advice;
5

6

import
java.lang.reflect.Method;
7

8

import
org.springframework.aop.AfterReturningAdvice;
9

10

/**
11

12

13

14

public
class
AfterAdvice
implements
AfterReturningAdvice
{
15

16

17

18

19

20

21

22

23

环绕通知:CompareInterceptor.java

/**
2

3

4

package
com.dragon.Advice;
5

6

import
org.aopalliance.intercept.MethodInterceptor;
7

import
org.aopalliance.intercept.MethodInvocation;
8

9

10

/**
11

12

13

14

public
class
CompareInterceptor
implements
MethodInterceptor
{
15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

配置文件applicationContext.xml

<?
xml version=”1.0″ encoding=”UTF-8″
?>
2

<!
DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”
>
3

4

<
beans
>
5

6

<
bean
id
=”beforeAdvice”
class
=”com.dragon.Advice.BeforeAdvice”
></
bean
>
7

<
bean
id
=”afterAdvice”
class
=”com.dragon.Advice.AfterAdvice”
></
bean
>
8

<
bean
id
=”compareInterceptor”
class
=”com.dragon.Advice.CompareInterceptor”
></
bean
>
9

<
bean
id
=”studenttarget”
class
=”com.dragon.study.Impl.StudentImpl”
></
bean
>
10

11

<
bean
id
=”student”
class
=”org.springframework.aop.framework.ProxyFactoryBean”
>
12

<
property
name
=”proxyInterfaces”
>
13

<
value
>
com.dragon.study.IStudent
</
value
>
14

</
property
>
15

<
property
name
=”interceptorNames”
>
16

<
list
>
17

<
value
>
beforeAdvice
</
value
>
18

<
value
>
afterAdvice
</
value
>
19

<
value
>
compareInterceptor
</
value
>
20

</
list
>
21

</
property
>
22

<
property
name
=”target”
>
23

<
ref
bean
=”studenttarget”
/>
24

</
property
>
25

26

</
bean
>
27

28

29

30

31

</
beans
>
现在开始写测试类,Test.java

/**
2

3

4

package
com;
5

6

import
org.springframework.context.ApplicationContext;
7

import
org.springframework.context.support.FileSystemXmlApplicationContext;
8

9

import
com.dragon.study.IStudent;
10

11

/**
12

13

14

15

public
class
Test
{
16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100464.html原文链接:https://javaforall.net