`
chandler
  • 浏览: 81610 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring学习笔记(三)

阅读更多

AOP基本术语
      通知(advice):定义是切面的目标,功能。但是就我的感觉来说,这只是一个类似桥梁的中间件。因为在例子中的所有advice类,就指明了什么时候该做什么方法。不过就advice的字义来理解。它只是一个建议,建议什么时候执行吧。
     连接点(joinpoint):书上的定义是应用通知的时机,书上的这个定义有点模糊。我是这么理解的,如果说一个系统中,应用切面编程的所有交点。在我脑海中,有这样一幅图片(是受了书上的突变的启发):其实编写一个软件,会有很多的逻辑流,他们相互的交织着一个软件才能完成一个工作。而连接点就是这些逻辑流的交点。
     切入点(pointcut):一个连接点的子集,或者说集合。借用一个数据库的概念,就是形成一个“原子性”的接入点。这里就是形成了一条逻辑流上所有的点。
     切面(Aspect):通知和切入点的集合
     引入(Introduction):允许向现有的类添加新方法和属性。这个我总觉得和切面不搭界。
    目标(Target):被通知的对象,也就是被切的对象
    代理(Proxy):这估计和Spring实现AOP的方式有关。Spring是利用代理来完成的。这就是为了实现而形成的代理。
    织入(Weaving):实现AOP的过程。

流程
     整个的流程相当的简单,建议一个切面。这里的切面其实就是一个逻辑流。切面只是在业务中不是占主导地位,或者说不是主要功能,但是必须要存在的逻辑流。就好像书中的例子观众,我们都明白这些其实对于程序来说,并不是最重要的。没有观众也能演,没用身份验证程序同样能跑。但是没有了会变成另一样东西,没有观众的表演叫彩排。
     然后是建立通知。其实就是建立其和其他逻辑流交叉的时候的连接点进行定义。我觉得这有点拗口。毕竟程序是死的,但是逻辑是活的。逻辑流的之间需要排好方法执行的先后,这就是通知的作用。
     切入点。这个有点死。就是配置xml文档。

   
	    <!-- 切入点--> 
	    <bean id="audienceAdvisor"
	        class="org.springframework.aop.aspectj.AspectJExpressionPointcutAdvisor" >
	    	<property name="advice" ref="audienceAdvice"/>
	    	<property name="expression" value="execution(* *.perform*(..))"/>
	    </bean>
 
    其中,advice表示是刚才建立的通知者的类。而erpression可以说是真正的切入点。既执行的方法。
    这里还有一个语法。第一个*代表的是返回值,然后空格,第二个星表示的是类名。dot然后就是方法名。这里为了方便,就大多数都用了*,表示代表全部。如果实际中,则是正常的名字。
    最后设置代理。其实这一段我明白,但是难以用言语表示其作用。在spring中,任何东西都需要一个bean。代理也是毅然。下面是xml文档。
    
	    <!-- 手动设置代理  -->
	    <bean id="dukeTarget"
	         class="geniusgame.PoeticJuggler">
	         <constructor-arg value="15"/>
	    	 <constructor-arg ref="sonnet29"/>
	    </bean>
	    
	    <bean id="dukeproxy"
	        class="org.springframework.aop.framework.ProxyFactoryBean">
	        <property name="target" ref="dukeTarget"/>
	        <property name="interceptorNames" value="audienceAdvisor"/>
	        <property name="proxyInterfaces" value="geniusgame.Performer"/>
	    </bean>
 
   然后是自动代理,少了一个bean的设置。
 
  <!-- 自动代理 
	    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>-->
 

纯粹的aop切面
      理解了上面,这个只是一个形式而已。我就直接写xml配置文件了。
  
	    <aop:config>
	    
	    	<aop:aspect ref="audience">
	    		<aop:before
	    			method="takeSeats"
	    			pointcut="execution(* *.perform(..))"
	    		/>
	    		
			    <aop:before
	    			method="turnoffCellPhones"
	    			pointcut="execution(* *.perform(..))"
	    		/>	
	    		
	    		<aop:after-returning
	    			method="applaud"
	    			pointcut="execution(* *.perform(..))"
	    		/>	 
	    		<aop:after-throwing
	    			method="demandRefund"
	    			pointcut="execution(* *.perform(..))"
	    		/>   	
	    	</aop:aspect>

	    <!--
	    	<aop:advisor id="aa" 
	    	             advice-ref="audienceAdvice"
	    	             pointcut="execution(* *.perform(..))"
	    	             order="0"/>
	     -->
	    </aop:config>
 


0
0
分享到:
评论

相关推荐

    Spring 学习笔记三

    《Spring 学习笔记三——深入理解Spring框架》 在我们的Spring学习旅程中,这篇笔记将带领大家更深入地探讨Spring框架的核心特性及其工作原理。Spring作为Java开发中广泛使用的轻量级框架,其强大的功能和灵活性...

    Springcloud学习笔记.md

    Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...

    Spring学习笔记( spring视频笔记)

    Spring学习笔记( spring视频笔记)

    Spring学习笔记 自我总结

    spring学习笔记

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring学习笔记(马士兵spring视频笔记).doc

    Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc

    Spring学习笔记.zip

    根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    javaSpring学习笔记

    “Java Spring学习笔记”是一份宝贵的资源,专门为想要学习和掌握Java Spring框架的开发者而设计。这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用...

    Spring Cloud 学习笔记.pdf

    Hystrix是一个延迟和容错库,旨在隔离访问远程系统、服务和第三方库,停止级联失败,并提供后备选项。它提供了熔断、线程隔离、信号量隔离、超时机制、并发数限制、请求缓存、请求合并等容错功能。Hystrix通过仪表板...

    尚学堂Spring学习笔记

    "尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...

    Spring6学习笔记

    Spring6学习笔记,师承老杜

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    Spring学习笔记

    Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记

    Spring学习笔记.doc

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

    spring实用学习笔记(能够跟着实操的)

    spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记...

    Spring学习笔记.xmind

    Spring学习笔记.xmind

Global site tag (gtag.js) - Google Analytics