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

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

    在Spring中,切面可以是Java类或XML配置。 **2. 连接点(Join Point)** 连接点是指程序执行过程中的某个特定点,例如方法调用、异常处理、字段访问等。在Spring中,连接点通常是方法的执行。 **3. 通知(Advice)...

    java aop、ioc 、注解 实例 Demo

    Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...

    aop.zip_884AOP_java aop原理_javaaop原理

    Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务...因此,深入学习和实践Java AOP是提升Java开发能力的重要一步。

    Aop.rar_aop_java aop 例 proxy

    通过学习和实践,你可以掌握如何在实际项目中有效地利用AOP来提高代码的复用性和可维护性,同时降低系统复杂度。 在AOP中,切面(Aspect)是关注点的模块化,它包含了通知(Advice)——即切面要执行的行为,以及...

    spring-aop.rar_java aop_spring aop

    【描述】"SPRING AOP自主实现,还包括一些java基础,可以很快自主实现切面编程" 提示我们,此资源旨在帮助开发者了解如何自定义实现Spring的AOP功能,并且提供了Java基础的学习材料,以加速对切面编程的理解和实践。...

    Aop.rar_aop_java aop

    AOP(Aspect Oriented Programming,面向切面编程)是Java编程领域中的一种设计模式,它扩展了传统的...通过阅读和学习这些代码,开发者可以更好地掌握AOP技术,并将其应用到实际项目中,提升代码的可维护性和复用性。

    Java JDK 实现AOP

    ### Java JDK 实现AOP详解 #### AOP的起源与发展 面向方面编程(Aspect-Oriented ...Java JDK 提供了强大的工具支持AOP的实现,通过学习并实践上述示例,开发者可以更好地理解AOP的工作原理及其在实际场景中的应用。

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    spring_aop_xml.rar_java aop_xml aop

    在实际的`spring_aop_xml`压缩包中,应该包含了相关的XML配置文件、服务接口及其实现类、通知类等,通过这些文件可以更好地理解和学习如何在XML中配置和使用Spring AOP。通过深入学习和实践,你将能熟练掌握这一强大...

    spring_AOP.rar_876.aop_java aop_spring_aop

    Spring AOP(面向切面编程)是Java开发中Spring框架的核心特性之一,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。在SSH(Struts、Spring、Hibernate)经典企业级开发框架中,Spring AOP扮演着至...

    java 实现AOP

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

    java AOP接口防刷代码

    通过对这个代码包的学习,我们可以掌握如何在实际项目中运用AOP进行接口防护,保护系统免受恶意攻击,同时也能提高代码的可维护性和复用性。在分析和理解这些代码的过程中,对于Spring AOP的理解和应用将会有显著...

    基于Bytebuddy的Java Agent AOP框架.zip

    Java Agent是一种在JVM级别对程序进行...通过学习和实践,我们可以掌握如何使用ByteBuddy来创建高效、灵活的代理类,以及如何利用Java Agent实现字节码级别的方法拦截,从而提升我们的编程技巧和对Java底层机制的理解。

    java开发常用jar包之spring--aop.rar

    本资源"java开发常用jar包之spring--aop.rar"聚焦于Spring框架的一个重要组件——Aspect Oriented Programming(面向切面编程,简称AOP)。AOP是Spring框架的核心特性之一,它允许开发者将关注点从核心业务逻辑中...

    spring_aop1.rar_java aop_spring mvc 例子

    通过这个实例,开发者能够逐步学习如何创建、配置和使用Spring AOP,以及如何将AOP概念应用于实际的Spring MVC项目中。同时,通过阅读说明文件和运行示例代码,可以帮助加深对AOP原理和实践的理解。对于初学者来说,...

    aop思想的java代码实现

    在学习和使用AOP时,有以下几个关键概念需要理解: - **切面(Aspect)**:切面是关注点的模块化,它封装了多个相关通知(Advice)和连接点(Join Point)。 - **通知(Advice)**:通知是在特定连接点执行的代码,...

    java aop demo

    Java AOP(面向切面编程)是Java编程领域中一种重要的设计模式,它允许程序员在不修改源代码的情况下,插入新的行为或增强已有功能。在本示例中,我们将探讨如何在Spring Boot框架中实现AOP,从而提高代码的可维护性...

    Spring-AOP demo

    Spring AOP(面向切面...在"Spring-AOP demo"中,我们可以学习如何结合注解和XML配置,将AOP应用于不同层次,实现灵活且模块化的应用程序设计。实践这个示例将加深对Spring AOP的理解,并提升实际项目中的应用能力。

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

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

    Spring AOP应用Demo

    4. **配置AOP**:在Spring的配置文件(如`applicationContext.xml`)中启用AOP并注册切面,或者在Java配置类中使用`@EnableAspectJAutoProxy`注解。 5. **运行与测试**:运行Demo程序,观察通知是否按照预期在合适...

Global site tag (gtag.js) - Google Analytics