AOP就是把分散在各个类中的相似的业务逻辑分离出来,单独写成一个类,然后在通过IOC依次添加回去!大概说就是上面的那个意思!Spring in action中的前面的讲解只是让你知道Spring中是如何作到AOP的,如果你能快速理解AOP的意思,也可以不用太看“advice,pointcut,advisor,interceptor,proxy”这些东东的!当然,出于深入理解,还是建议学习一下的哦!我觉得你学习一下Struts2.0,看看其中的Interceptor的知识就会非常明白AOP的原理和优点了,Struts2.0的核心就是拦截器,也就是在进入Action之前和之后插入一组拦截器完成各种功能,例如类型转换,防止表单重复提交等,这些在JSP或者Struts1.x中,我们是需要在各个Action中手写代码的,但是因为功能是公共的,Struts2.0就利用AOP完成了这些功能,只需要在配置文件中写一下,Action中什么都没有,非常简单的哦!
有了代理,就可以添加拦截了。interceptor Names 就是告诉代理类,我添加了哪些拦截器和通知器了。于是interceptor,advisor出现了。有了advisor,于是advice和pointcut就产生了。pointcut一般只需在配置文件中配置即可,但你需要拦截的内容,行为都需要在advice定义。其实advice也可以理解成为一个interceptor。写advice并不轻松。但spring有许多写好的给你调用。
什么意思?
再用proxy包个皮spring提供了一些proxy
我用到了配合hibernate的TransactionProxyFactoryBean
感觉被proxy用JTA包了个皮,不用再beginTransaction和commit了不知道理解的对不对有个老师给我们讲过一个代理,很爽的,建议好好学习
aspectJ是不是性能不太好?
谢谢
感觉很难理解的部分就是aop那块了
我的理解:
切面就是你要实现的交叉的功能,好像日志记录;
你在系统的很多地方都要用到日志记录
但是往往这些代码都是很零散的嵌入在你的业务代码里面,
那么我们就可以形成这样一个日志记录这样一个单独的模块,改变零散的状态
那连接点就是在程序执行过程中插入切面的地方,可以是方法调用,异常抛出,或者是修改字段
只是给我们提供好了Spring接口,
而不需要再使用AspectJ的接口,
这其实是对AspectJ的封装,
所以,
想要学习AOP,
最好从AspectJ入手,
学起来会简单些~