`
cuihz3115
  • 浏览: 7472 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring.0中用到的一些术语

阅读更多

n         关注点(Concern)

关注点也就是我们要考察或解决的问题。比如在一个在一个电子商务系统中,订单的处理,用户的验证、用户日志记录等都属于关注点(Core Concerns)。核心关注点,是只一个系统中的核心功能,也就是一个系统中跟特定业务需求联系最紧密的商业逻辑。在一个电子商务系统中,订单处理、客户管理、库存及物流管理都是属于系统中的核心关注点。除了核心关注点以外,还有一种关注点,他们分散在每个各个模块中解决同一样的问题,这种跨越多个模块的关注点称为横切关注点或交叉关注点(Crosscutting Concerns)。在一个电子商业系统中,用户验证、日志管理、事务处理、数据缓存都属于交叉关注点。

AOP的编程方法中,主要在于对关注点的提起及抽象。我们可以把一个复杂的系统看作是由多个关注点来有机组合来实现,一个典型的系统可能会包括几个方面的关注点,如核心业务逻辑、性能、数据存储、日志、授权、安全、线程及错误检查等,另外还有开发过程中的关注点,如易维护、易扩展等。

n         切面(Aspect)

切面是一个抽象的概念,从软件的角度来说是指在应用程序不同模块中的某一个领域或方面。从程序抽象的角度来说,可以对照OOP中的类来理解。OOP中的类(class)是实现世界模板的一个抽象,其包括方法、属性、实现的接口、继承等。而AOP中的切面(aspect)是实现世界领域问题的抽象,他除了包括属性、方法以外,同时切面中还包括切入点Pointcut、增强(advice)等,另外切面中还可以给一个现存的类添加属性、构造函数,指定一个类实现某一个接口、继承某一个类等。比如,在Spring AOP中可以使用下面的配置来定义一个切面:

<aop:aspect id="aspectDemo" ref="aspectBean">

 <aop:pointcut id="somePointcut"  expression="execution(* Component.*(..)" />     

 <aop:after-returning pointcut-ref="log" method="" />   

</aop:aspect>

n         连接点(Join point)

  连接点也就是运用程序执行过程中需要插入切面模块的某一点。连接点主要强调的是一个具体的“点”概念。这个点可以是一个方法、一个属性、构造函数、类静态初始化块,甚至一条语句。比如前面的例子中,连接点就是指具体的某一个方法。

在一般的AOP框架中,一般采用签名的方式来描述一个连接点,有的AOP框架只有很少类型的连接点,如Spring AOP中当前只有方法调用。

n         切入点(Pointcuts)

  切入点指一个或多个连接点,可以理解成一个点的集合。切入点的描述比较具体,而且一般会跟连接点上下文环境结合。比如,在前面的例子中,切入点“execution(* Component.*(..)”表示“在Component类中所有以business打头的方法执行过程中”,包含了3个连接点(business1business2business3)集合。另外,“Component类中的所有方法调用”、“包com.easyjf.service里面所有类中所有方法抛出错误”、“类UserInfo的所有getterseeter方法执行”,这些都可以作为切入点。另外,在大多数AOP框架实现中,切入点还支持集合运算,可以把多个切入点通过一定的组合,形成一个新的切入点。在AspectJ中,可以使用||&&!等操作符来组合得到一个符合特定要求的入点。如:

  pointcut setter(): target(UserInfo) && (call(void set*(String)) || call(void set*(int)));

    表示所有UserInfo类中的所有带一个Stringint型参数的setter方法。

pointcut transaction():target(service..)&&call(* save*(..))

  表示service包中所有以save开头的方法。

n         增强或通知(Advice)

  Advice一词不管翻译成建议、通知或者增强,都不能直接反映其内容,因此本书主要使用“增强”这一叫法。当然也可以把其仅看作是一个简单名词的来看待。增强(Advice)里面定义了切面中的实际逻辑(即实现),比如日志的写入的实际代码,或是安全检查的实际代码。换一种说法增强(Advice)是指在定义好的切入点处,所要执行的程序代码。比如,下面的话都是用来描述增强(Advice)的例子:“当到达切入点seeter时,检查该方法的参数是否正确”、“在save方法出现错误这个切入点,执行一段错误处理及记录的操作”。一般情况下,增强(通知)主要有前增强、后增强、环绕增强三种基本类型。

  前增强(before advice)-是指在连接点之前,先执行增强中的代码。

  后增加(after advice)-是指在连接点执行后,再执行增强中的代码。后增强一般分为连接点正常返回增加及连接点异常返回增强等类型。

  环绕增强(around advice)-是一种功能强大的增强,可以自由改变程序的流程,连接点返回值等。在环绕增强中除了可以自由添加需要的横切功能以外,还需要负责主动调用连接点(通过proceed)来执行激活连接点的程序。 

--------------------这部分摘自easyif官方网站的spring教程,感谢他们的辛劳--------------------------

分享到:
评论

相关推荐

    spring.jar spring.jar spring.jar spring.jar

    spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar

    spring-mock.jar

    Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....

    spring-web-2.5.jar

    org.springframework.remoting.caucho.BurlapClientInterceptor.class org.springframework.remoting.caucho.BurlapProxyFactoryBean.class org.springframework.remoting.caucho.BurlapServiceExporter.class org....

    spring3.0.5 所有jar文件

    包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...

    org.spring-framework-3.0.4. 所有jar

    org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....

    spring.jar spring-agent.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar

    spring.jar spring-aop.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar

    spring.rar jar包

    spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring.rar jar包spring....

    spring3.1 官方全部jar包

    spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....

    org.springframework.core.jar

    5. **排序与比较**:`org.springframework.core.order`和`org.springframework.core.type`包提供了排序算法和类型比较机制,对于Spring容器中bean的排序和类型检查起到了关键作用。 6. **事件驱动**:`org.spring...

    spring.ftl

    该资源为spring 4.2 spring freemarker 国际化用的 引入 spring.ftl &lt;#import "../common/spring.ftl" as spring /&gt; 页面获取国际化 &lt;@spring.message "handle.reSubmit"/&gt;

    搭建本地服务器https://start.spring.io/

    使用idea Spring Initializr 创建spring boot项目爆无法访问https://start.spring.io/时,将这文档解压,并用解压后附带的指令运行jar包,将https://start.spring.io/换为120.0.0.1:8099即可。(注意,确保jdk版本不...

    spring3.1.1jar及其关联jar

    org.springframework.aop-3.1.1.RELEASE org.springframework.asm-3.1.1.RELEASE org.springframework.aspects-3.1.1.RELEASE org.springframework.beans-3.1.1.RELEASE org.springframework.context.support-3.1.1....

    org.springframework.core_3.1.1.RELEASE.jar

    在`3.1.1.RELEASE`版本中,Spring对核心模块进行了一些优化: 1. 更强的类型安全:增强了类型转换系统,提高了转换失败时的错误信息提示。 2. 优化的反射操作:提高了反射API的性能,减少了内存占用。 3. 更好的兼容...

    org.springframework.web的jar包.zip

    通过`ServerEndpointExporter`,我们可以轻松地集成WebSocket功能到Spring应用中,无需关心底层的协议细节,从而专注于业务逻辑的实现。此外,Spring还提供了`WebSocketMessageBrokerConfigurer`接口,可以进一步...

    org.springframework.web.jar

    9. **Integration with other Spring Modules**:`org.springframework.web.jar`与Spring框架的其他模块紧密集成,如Spring Core、Spring Beans、Spring AOP等,共同构建出一个完整的应用框架。 总的来说,`org....

    Apress.Introducing.Spring.Framework.A.Primer.

    This book is an introduction to the well-known Spring Framework that offers an inversion of control container for ...• Use Groovy with Spring. • Use the new Spring Boot and Spring XD technologies.

    spring开发指南spring.chm

    spring开发指南 是非常好用的spring手册,希望大家能从中学到很多东西。。。。。。。。。。。。。。。。。。。。。。。。

    spring-struts.jar

    META-INF/MANIFEST.MForg.springframework.web.struts.ActionServletAwareProcessor.class org.springframework.web.struts.ActionSupport.class org.springframework.web.struts.AutowiringRequestProcessor.class ...

Global site tag (gtag.js) - Google Analytics