锁定老帖子 主题:Java AOP学习
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-18
通知(Advice):横切操作时具体的操作。 切入点(Pointcut):描述什么时候需要进行横切操作,即在哪些地方需要加入通知,但是切入点不关心具体的通知是什么。 通知者(Advisor):由于通知者是通过切入点来创建的(切入点作为创建一个通知者实例时的参数),切入点可以对目标类和目标方法进行详细的描述,所以通知者告诉代理哪些类的哪些方法需要进行横切操作,从而对需要实现横切的方法进行灵活的定制。我把通知者理解为切入点和通知的绑定(通知作为创建通知者实例时的另一个参数),它描述了哪些类的哪些方法需要进行哪些横切操作(即哪个通知)。 再说说代理,代理的作用就是透明的为我们提供获得了通知的目标类(具体的使用方法看一下例子就明白了,非常简单)。这个目标类可以是我们自己写的任何类或者其他第三方类。我们在调用通过代理得到的目标类中的方法时就会触发某个通知,从而完成横切操作。 最后是我总结的实现横切的一般步骤 简单的切入: 1,创建某个通知的实例(spring提供五种通知) 2,创建代理的的实例 3,将通知加入代理 4,通过代理获取目标类实例 5,调用目标类的方法。 可对需要横切的方法进行具体定制的切入: 1,创建切入点实例(Spring提供了七种可对目标类和目标方法进行定制的切入点实现) 2,通过切入点和通知创建通知者实例 3,将通知者加入代理 4,通过代理获取目标类实例 5,调用目标类的方法。 实现Spring IoC容器的访问,可以通过如下两个接口完成 1.BeanFactory:开发者借助于配置文件实现对JavaBean的配置和管理. 2.ApplicationContext:构建在BeanFactory基础上,既继承于它,除了具有BeanFactory的功能外,还添加其他的功能 .3区别:BeanFactory 延迟载入所有的Bean,至到getBean()被调用时才被创建。 ApplicationContext 在上下文启动后预载入所有的单实例Bean 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-19
我还是不怎么明白原理。
用Spring也有一段时间了。 对AOP的理解太少。 |
|
返回顶楼 | |
发表时间:2007-01-19
ffgames 写道 我还是不怎么明白原理。
用Spring也有一段时间了。 对AOP的理解太少。 可以从看spring的事务处理代码入手。 可以先看下面的2个类: TransactionProxyFactoryBean: 在spring配置文件中需要指定负责处理事务的类。 这个类的getObject方法,可以返回需要事务功能的类的aop代理类. 该代理类会执行配置的拦截器的相关方法。 TransactionInterceptor: 这个就是用来具体处理事务的拦截器了。 |
|
返回顶楼 | |
发表时间:2007-01-19
什么通知、切入点那几个概念我总不愿意记。关于原理,前几天看书里说:做需求分析时用到的用例是功能性的,用例之间的关系是横向的;而用例在编码实现时会用到不同层次的组件,比如表现层组件、数据层组件,这些组件间关系是纵向的。用例和用例间,组件和组件间,耦合性不大。
但是一个用例会由不同层次上的多个组件实现,一个组件会用来实现多个用例。这种交叉如果不能得到有效控制,代码的耦合性就高了。面向方面可以解决这个问题,“方面”是具有一定功能的,有用例的特性;同时它又有组件的特性。事务,日志就是这样,不但有一定的功能,而且如果在某一层次上把它看做组件,重用性非常高。我就是这样理解“方面”:把功能做成组件。 |
|
返回顶楼 | |
发表时间:2007-01-19
个人觉得先熟悉dynamicProxy(不妨可以写个列子跑跑),对于AOP的理解会有帮助.
|
|
返回顶楼 | |
发表时间:2007-01-19
ppeter 写道 个人觉得先熟悉dynamicProxy(不妨可以写个列子跑跑),对于AOP的理解会有帮助.
spring中有2种aop代理类实现,一种是jdk的动态代理,另外一种是CGLib实现的代理类。ppeter说的很有道理,看看动态代理,对理解aop非常有好处的。 |
|
返回顶楼 | |
发表时间:2007-01-24
我的理解Advisor是Spring用来把Advice和PointCut联系在一起的东西,让spring知道哪些对象,哪些地方该使用代理,使用什么代理
|
|
返回顶楼 | |
发表时间:2007-01-24
我觉得真想正确理解和使用aop,必须要真正明白oop以后,否则aop的使用上必定会有麻烦
|
|
返回顶楼 | |
发表时间:2007-05-26
做项目的时候,不要忘记多看看spring文档,这样对真真理解AOP会有很大的帮助
|
|
返回顶楼 | |
发表时间:2007-05-27
想要真正实现aop的所有功能,推荐看一下aspectJ。spring的aop还是有所限制。
|
|
返回顶楼 | |