SpringAOP简单入门示例. 下载本文

内容发布更新时间 : 2025/2/22 20:19:25星期一 下面是文章的全部内容请认真阅读。

分享一个自己写的最为简单的Spring AOP的应用,其实,本人也是学习Spring不久,只是把一些个人的理解分享下,供参考。可能很多人刚开始不太理解到底啥是AOP,其实它也是相对OOP来说的,类似OOP其实也是一种编程思想吧。本人暂且把Spring 中的AOP理解成一种方法的拦截器(可能有所片面,主要是方便理解)。

个人通俗理解,就好比你去自动取款机取钱,边上装了个摄像头在监视着。你取你的钱,不用管那摄像头干嘛,只是对于摄像头来说,已经把你取钱的这一过程记录了下来。你取钱的这一过程我们可以从OOP角度分析,而对于摄像头来说,就是从AOP角度去分析了。反映到我下面要讲的示例就是系统日志的记录。

我要讲的示例大致是这样的,从OOP角度分析,就是说现在有一个User对象,然后你要调用业务逻辑实现去保存(或者其他行为)这个User对象,或者说是做持久化操作,把User对象相关信息写进数据库。那么从AOP角度来看,就是在你进行保存对象这一行为发生的时候进行日志记录。就是说,你在进行业务操作的时候,不需要去关心系统背后到底做了啥,Spring AOP它已经帮你搞定了。

(图一、个人对于OOP与AOP在本人示例中的理解)

上图说表示的东西是个人的理解理解,纵向为主业务逻辑这里表现为对User对象的持久化操作,横向为AOP实现,这里表现为系统日志记录。

以下是代码具体实现:(采用Spring2.5,Myeclipse6.5) Java代码

1. (一)、从AOP角度分析: 2.

3. package org.wiki.spring.aspect; 4.

5. import org.aspectj.lang.JoinPoint; 6. 7. /**

8. * 定义切面类,将系统中的横切性关注点模块化 9. *

10. * @author Wiki.M 11. * 12. */

13.public class Aspect { 14.

15. /**

16. * 定义advice,即切面类中方法具体实现, 这里主要是用于记录日志,只做简单处理。 17. *

18. * @param joinPoint,可以取得被拦截方法的一些信息 19. */

20. public void logging(JoinPoint joinPoint) { 21. //得到被拦截方法参数,并打印

22. Object[] args = joinPoint.getArgs(); 23. for (int i = 0; i < args.length; i++) {

24. System.out.println(\arg\+ i + \-- \+ args[i]); 25. } 26.

27. //得到被拦截方法签名

28. System.out.println(joinPoint.getSignature().getName());

29.

30. //记录系统日志具体实现

31. System.out.println(\ 32. }

33.} 34.

35.(二)从DAO,数据持久化角度分析: 36.package org.wiki.spring.dao; 37.

38.import org.wiki.spring.domain.User; 39. 40./**

41. * 定义IUserDAO接口,目的是为了灵活实现UserDAO不同的操作。 42. * @author Wiki.M 43. * 44. */

45.public interface IUserDAO { 46.

47. public void addUser(User user); 48.

49. public void deleteUser(int id); 50.

51. public void updateUser(int id); 52.} 53. 54.

55.//================================================== 56.

57.package org.wiki.spring.dao; 58.

59.import org.wiki.spring.domain.User; 60. 61./**

62. * IUserDAO接口的具体实现,这里只做简单处理 63. * @author Wiki.M 64. * 65. */

66.public class UserDAOImpl implements IUserDAO { 67.

68. @Override

69. public void addUser(User user) {

70. System.out.println(\ 71.

72. } 73.

74. @Override

75. public void deleteUser(int id) {

76. System.out.println(\