`
zaihch
  • 浏览: 35102 次
社区版块
存档分类
最新评论
阅读更多
先说说我对几个概念的理解

通知(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

分享到:
评论
13 楼 leeking 2007-06-11  
看的有些糊涂,要是用个例子讲,效果应该能好些.
12 楼 zyl 2007-05-27  
想要真正实现aop的所有功能,推荐看一下aspectJ。spring的aop还是有所限制。
11 楼 magice 2007-05-26  
做项目的时候,不要忘记多看看spring文档,这样对真真理解AOP会有很大的帮助
10 楼 junquinchen 2007-04-02  
不错不错 
9 楼 happinesss 2007-01-24  
ka
8 楼 happinesss 2007-01-24  
zaihch 写道
先说说我对几个概念的理解

通知(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



楼主你能详细说明一下AOP用法.你是QQ吗? 我的QQ是50887355.
谢谢
7 楼 likeblood 2007-01-24  
我觉得真想正确理解和使用aop,必须要真正明白oop以后,否则aop的使用上必定会有麻烦
6 楼 lsy 2007-01-24  
我的理解Advisor是Spring用来把Advice和PointCut联系在一起的东西,让spring知道哪些对象,哪些地方该使用代理,使用什么代理
5 楼 pupi 2007-01-19  
ppeter 写道
个人觉得先熟悉dynamicProxy(不妨可以写个列子跑跑),对于AOP的理解会有帮助.


spring中有2种aop代理类实现,一种是jdk的动态代理,另外一种是CGLib实现的代理类。ppeter说的很有道理,看看动态代理,对理解aop非常有好处的。
4 楼 ppeter 2007-01-19  
个人觉得先熟悉dynamicProxy(不妨可以写个列子跑跑),对于AOP的理解会有帮助.
3 楼 gavin 2007-01-19  
什么通知、切入点那几个概念我总不愿意记。关于原理,前几天看书里说:做需求分析时用到的用例是功能性的,用例之间的关系是横向的;而用例在编码实现时会用到不同层次的组件,比如表现层组件、数据层组件,这些组件间关系是纵向的。用例和用例间,组件和组件间,耦合性不大。
但是一个用例会由不同层次上的多个组件实现,一个组件会用来实现多个用例。这种交叉如果不能得到有效控制,代码的耦合性就高了。面向方面可以解决这个问题,“方面”是具有一定功能的,有用例的特性;同时它又有组件的特性。事务,日志就是这样,不但有一定的功能,而且如果在某一层次上把它看做组件,重用性非常高。我就是这样理解“方面”:把功能做成组件。
2 楼 pupi 2007-01-19  
ffgames 写道
我还是不怎么明白原理。
用Spring也有一段时间了。
对AOP的理解太少。


可以从看spring的事务处理代码入手。
可以先看下面的2个类:

TransactionProxyFactoryBean:
在spring配置文件中需要指定负责处理事务的类。
这个类的getObject方法,可以返回需要事务功能的类的aop代理类.
该代理类会执行配置的拦截器的相关方法。

TransactionInterceptor:
这个就是用来具体处理事务的拦截器了。
1 楼 ffgames 2007-01-19  
我还是不怎么明白原理。
用Spring也有一段时间了。
对AOP的理解太少。

相关推荐

    aop学习

    aop学习

    java 实现AOP

    要详细了解学习AOP可以到它老家http://aosd.net去瞧瞧。这里只是意图通过一个简单的例子向初学者展示一下如何来进行AOP.  为了简单起见,例子没有没有使用任何第三方的AOP Framework, 而是利用Java语言本身自带...

    java AOP原理以及实例用法总结

    在本篇文章里我们给大家整理了关于java AOP原理以及相关知识点总结,正在学习的朋友们参考下。

    (java)AOP代理方面的简单介绍

    在学习java面向过程中,关于AOP代理这块,当时思路不是很清晰,借鉴了很多资料进行了解,后面把自己的一些见解整理成浅显的笔记进行加深印象,现在把它分享给学习AOP代理思路的朋友们,希望我的一点浅显的总结能够...

    用Java动态代理实现AOP

    Java初学者不禁要发出感慨,OOP还没有学通呢,又来AOP。本文不是要在理论上具体阐述何为AOP, 为何要进行AOP . 要详细了解学习AOP可以到它老家http://aosd.net去瞧瞧。这里只是意图通过一个简单的例子向初学者展示...

    Spring AOP应用Demo

    使用Spring开发的AOP小程序,供学习使用

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    java 动态代理实现AOP

    讲述JAVA的动态代理的原理,以及通过JAVA的动态代理来实现AOP。简洁,易懂,学习AOP的入门级文档

    Spring之AOP技术文档

    这份文档以例子的形式讲诉了AOP技术,希望可以帮助学习的人!

    Spring4.0从入门到精通AOP日志示例

    本代码中还包括了一个java自带注解的例子写的都非常易懂对于hellospring中第一位回复者的问题spring4.0与以前的有什么不同最大的不同包用的不一样了哈哈支持的新技术更多了具体新特性会在后面例子中一点点体现

    SpringAOP测试Demo

    跟开涛学习SpringAop之后的一些测试代码,也是这篇帖子测试代码的补充https://my.oschina.net/longfong/blog/805410

    java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站

    java SSH框架架构学习_笔记.zip java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站

    springaop学习

    springaop学习

    spring aop学习实例

    包内是aop入门的一些小例子。包括java代码和其中用到的xml文件。一个子包(如aop包)里有一个可执行应用程序。

    javaSpring学习笔记

    在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,包括IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)、Spring MVC、Spring Boot等核心内容。每个主题都结合了理论知识和实际示例,帮助你...

    Java Framework 关于IOC、AOP、Log的案例源码

    该源码是课程 Java Spring案例精讲 ---- Spring框架 的源码,包含Java Spring的最简单的Hello World、IOC、AOP及Log的源码 Spring整体框架中的核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等...

    学习spring必须要的java包

    学习spring不可少的包,commons-logging.java,hamcrest-core-1.3.java,junit-4.11.java,log4j-1.2.17.java,mysql-connector-java-5.1.39-bin.java,spring-aop-4.2.9.RELEASE.java,spring-beans-4.2.9.RELEASE.java,...

    Spring之AOP配置文件详解

    Spring之AOP配置文件详解.txt Spring之AOP配置文件详解.txt 帮助你更快张握Java的学习!

    SpringAOP的主要注解

    Spring 框架中对面向切面编程aop的理解,java中对于spring的理解是有助于java的学习

Global site tag (gtag.js) - Google Analytics