Spring 中基于 AOP 的 @AspectJ注解实例

本文内容纲要:

- 1.第一步:倒入jar包,跟上个例子包是一样的

- 2.第二步:创建三个类

-   2.2下面是 Student.java 文件的内容:

-   2.3下面是 MainApp.java 文件的内容:

- 3.第三步:创建bean文件(上面的头文件在上个例子当中有,这里就省略了)

@AspectJ 作为通过 Java 5 注释注释的普通的 Java 类,它指的是声明 aspects 的一种风格。通过在你的基于架构的 XML 配置文件中包含以下元素,@AspectJ 支持是可用的。

1.第一步:倒入jar包,跟上个例子包是一样的

  • aspectjrt.jar
  • aspectjweaver.jar
  • aspectj.jar
  • aopalliance.jar

2.第二步:创建三个类

  2.1这里是 Logging.java 文件的内容。这实际上是 aspect 模块的一个示例,它定义了在各个点调用的方法。

1 package com.spring.aop2;

2

3 import org.aspectj.lang.annotation.AfterReturning;

4 import org.aspectj.lang.annotation.AfterThrowing;

5 import org.aspectj.lang.annotation.Aspect;

6 import org.aspectj.lang.annotation.Before;

7 import org.aspectj.lang.annotation.Pointcut;

8

9 @Aspect // 定义切面

10 public class Logging {

11 @Pointcut("execution(* com.spring.aop2.Student.*(..))") // 定义切点

12 private void selectAll() {

13

14 }

15 /**

16 * 定义通知方法

17 */

18

19 @Before("selectAll()")

20 public void beforeAdvice() {

21 System.out.println("----------beforeAdvice-----------");

22

23 }

24

25 @AfterReturning(pointcut = "selectAll()", returning = "retVal")

26 public void afterReturningAdvice(Object retVal) {

27 System.out.println("Returning:" + retVal.toString());

28 }

29

30 @AfterThrowing(pointcut = "selectAll()", throwing = "ex")

31 public void AfterThrowingAdvice(IllegalArgumentException ex) {

32 System.out.println("There has been an exception: " + ex.toString());

33 }

34

35 }

  2.2下面是 Student.java 文件的内容:

1 package com.spring.aop2;

2

3 public class Student {

4 /**

5 * 定义学生类

6 */

7 private String name;

8 private Integer age;

9

10 public String getName() {

11 return name;

12 }

13

14 public void setName(String name) {

15 this.name = name;

16 }

17

18 public Integer getAge() {

19 return age;

20 }

21

22 public void setAge(Integer age) {

23 this.age = age;

24 }

25

26 public void printAdvice() {

27 System.out.println("name:" + name + ",age:" + age);

28

29 }

30

31 }

  2.3下面是 MainApp.java 文件的内容:

1 package com.spring.aop2;

2

3

4

5 import org.springframework.context.ApplicationContext;

6 import org.springframework.context.annotation.AnnotationConfigApplicationContext;

7 import org.springframework.context.support.AbstractApplicationContext;

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

9

10 public class Main {

11 /**

12 * Spring aop基于注解 配置文件springAop.xml

13 * author:

14 * mail:2536201485@qq.com

15 * 时间:

16 */

17 public static void main(String[] args) {

18 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring_xml/springAop.xml");

19 Student student=(Student)applicationContext.getBean("Student");

20 student.printAdvice();

21 }

22

23 }

3.第三步:创建bean文件(上面的头文件在上个例子当中有,这里就省略了)

下面是配置文件 Beans.xml:

1     

2 <!-- 开启注解 通过aop命名空间的<aop:aspectj-autoproxy

3 />声明自动为spring容器中那些配置@aspectJ切面的bean创建代理,织入切面-->

4 <aop:aspectj-autoproxy/>

5 <!-- 定义切面bean -->

6 <bean id="Logging" class="com.spring.aop2.Logging"></bean>

7

8 <!-- 配置bean -->

9 <bean id="Student" class="com.spring.aop2.Student">

10 <property name="name" value="张三"></property>

11 <property name="age" value="23"></property>

12 </bean>

让我们运行一下应用程序。如果你的应用程序一切都正常的话,这将会输出以下消息(其中包含了异常通知):

Image

本文内容总结:1.第一步:倒入jar包,跟上个例子包是一样的,2.第二步:创建三个类,  2.2下面是 Student.java 文件的内容:,  2.3下面是 MainApp.java 文件的内容:,3.第三步:创建bean文件(上面的头文件在上个例子当中有,这里就省略了),

原文链接:https://www.cnblogs.com/ysource/p/12864818.html

以上是 Spring 中基于 AOP 的 @AspectJ注解实例 的全部内容, 来源链接: utcz.com/z/296781.html

回到顶部