aop

8 -- 深入使用Spring -- 5...2 使用@Cacheable执行缓存

余生颓废 提交于 2020-02-05 02:26:40
      8.5.2 使用@Cacheable执行缓存         @Cacheable可用于修饰类或修饰方法,当使用@Cacheable修饰类时,用于告诉Spring在类级别上进行缓存 ------ 程序调用该类的实例的任何方法时都需要缓存,而且共享同一个缓存区;当使用@Cacheable修饰方法时,用于告诉Spring在方法级别上进行缓存 ------ 只有当程序调用该方法时才需要缓存。         1. 类级别的缓存           当使用@Cacheable修饰类时,就可控制Spring在类级别进行缓存,这样程序调用类的任意方法时,只要传入的参数相同,Spring就会使用缓存。           Component : UserServiceImpl package edu.pri.lime._8_5_2.classrank.impl; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import edu.pri.lime._8_5_2.classrank.UserService; import edu.pri.lime._8_5_2.classrank.bean.User; @Service(value

Spring中Aop

試著忘記壹切 提交于 2020-02-05 01:28:51
什么是Aop Aop全称:Aspect Oriented Programming,即面向切面编程。 Aop是一种通过运行期动态代理实现代码复用的机制,是对传统OOP(Object Oriented Programming,面向对象编程 )的补充。目前,Aspectj是Java社区里最完整最流行的AOP框架,在Spring 2.0以上版本中可以通过Aspectj注解或基于XML配置AOP。 为什么使用Aop 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 (节省代码,提高代码复用性,便于开发) 如何使用Aop 第一步:拷jar包: 第二步:我们首先定义一个计算器类 //这里我们给上Service注解,从而扫描至IoC容器中 @Service public class CalculatorService implements ICalculatorService { public int mul ( int a , int b ) { return a * b ; } public int div ( int a , int b ) { return a / b ; } } 第三步:我们写一个切面类,增强方法有五种,会有一篇博客专门叙述,这里做了解即可 //这里Aspect声明该类为一个切面类

Spring Aop

孤人 提交于 2020-02-04 20:06:18
转自:http://www.cnblogs.com/yulinfeng/p/7811965.html,https://www.cnblogs.com/liuruowang/p/5711563.html 通知类型介绍 (1)Before:在目标方法被调用之前做增强处理,@Before只需要指定切入点表达式即可 (2)AfterReturning:在目标方法正常完成后做增强,@AfterReturning除了指定切入点表达式后,还可以指定一个返回值形参名returning,代表目标方法的返回值 (3)AfterThrowing:主要用来处理程序中未处理的异常,@AfterThrowing除了指定切入点表达式后,还可以指定一个throwing的返回值形参名,可以通过该形参名 来访问目标方法中所抛出的异常对象 (4)After:在目标方法完成之后做增强,无论目标方法时候成功完成。@After可以指定一个切入点表达式 (5)Around:环绕通知,在目标方法完成前后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知,注意编程中核心是一个ProceedingJoinPoint 代码实例 import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org

spring aop

北战南征 提交于 2020-02-04 19:33:41
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。 一 AOP的基本概念 (1)Aspect(切面):通常是一个类,里面可以定义切入点和通知 (2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用 (3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around (4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式 (5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类 二 Spring AOP Spring中的AOP代理还是离不开Spring的IOC容器,代理的生成,管理及其依赖关系都是由IOC容器负责,Spring默认使用JDK动态代理,在需要代理类而不是代理接口的时候,Spring会自动切换为使用CGLIB代理,不过现在的项目都是面向接口编程,所以JDK动态代理相对来说用的还是多一些。 基于注解的AOP配置方式 1.启用@AsjectJ支持 在applicationContext

Spring框架简单介绍

浪尽此生 提交于 2020-02-04 19:26:14
原文地址: http://my.oschina.net/myriads/blog/37922 1、使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也须要多人合作,随即分工出现。怎样划分模块,怎样定义接口方便分工成为软件project设计中越来越关注的问题。良好的模块化具有下面优势:可扩展、易验证、易维护、易分工、易理解、代码复用。 优良的模块设计往往遵守“低耦合高内聚”的原则。而“框架”是对开发中良好设计的总结,把设计中常常使用的代码独立出来,所形成的一种软件工具。用户遵守它的开发规则,就能够实现良好的模块化,避免软件开发中潜在的问题。广义上的框架无处不再,一个常见的样例就是PC硬件体系结构,人们仅仅要依照各自须要的主板、显卡、内存等器件就能够随意组装成自己想要的电脑。而做主板的厂商不用关心做显卡厂商的怎么实现它的功能。软件框架也是如此,开发者仅仅要在Spring框架中填充自己的业务逻辑就能完毕一个模块划分清晰纷的系统。 这里主要通过一个银行通知用户月收支记录的小样例来介绍轻型J2EE框架Spring的主要内容、它所解决的问题和实现的方法。 Spring框架主要能够分为3个核心内容: 1、容器 2、控制反转(IoC ,Inversion of Control) 3、面向切面编程(AOP ,Aspect-Oriented

Spring框架简介

半腔热情 提交于 2020-02-04 19:24:40
1 使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也需要多人合作,随即分工出现。如何划分模块,如何定义接口方便分工成为软件工程设计中越来越关注的问题。良好的模块化具有以下优势:可扩展、易验证、易维护、易分工、易理解、代码复用。 优良的模块设计往往遵守“低耦合高内聚”的原则。而“框架”是对开发中良好设计的总结,把设计中经常使用的代码独立出来,所形成的一种软件工具。用户遵守它的开发规则,就可以实现良好的模块化,避免软件开发中潜在的问题。广义上的框架无处不再,一个常见的例子就是PC硬件体系结构,人们只要按照各自需要的主板、显卡、内存等器件就可以任意组装成自己想要的电脑。而做主板的厂商不用关心做显卡厂商的怎么实现它的功能。软件框架也是如此,开发人员只要在Spring框架中填充自己的业务逻辑就能完成一个模块划分清晰纷的系统。 这里主要通过一个银行通知用户月收支记录的小例子来介绍轻型J2EE框架Spring的主要内容、它所解决的问题和实现的方法。 Spring框架主要可以分为3个核心内容: 容器 控制反转(IoC ,Inversion of Control) 面向切面编程(AOP ,Aspect-Oriented Programming) 例子中依次对这些特性进行介绍,描述了软件模块化后存在的依赖与问题,以及Spring框架如何解决这些问题。 2

Spring框架简介

淺唱寂寞╮ 提交于 2020-02-04 19:24:09
1、使用框架的意义与Spring的主要内容 随着软件结构的日益庞大,软件模块化趋势出现,软件开发也需要多人合作,随即分工出现。如何划分模块,如何定义接口方便分工成为软件工程设计中越来越关注的问题。良好的模块化具有以下优势:可扩展、易验证、易维护、易分工、易理解、代码复用。 优良的模块设计往往遵守“低耦合高内聚”的原则。而“框架”是对开发中良好设计的总结,把设计中经常使用的代码独立出来,所形成的一种软件工具。用户遵守它的开发规则,就可以实现良好的模块化,避免软件开发中潜在的问题。广义上的框架无处不再,一个常见的例子就是PC硬件体系结构,人们只要按照各自需要的主板、显卡、内存等器件就可以任意组装成自己想要的电脑。而做主板的厂商不用关心做显卡厂商的怎么实现它的功能。软件框架也是如此,开发人员只要在Spring框架中填充自己的业务逻辑就能完成一个模块划分清晰纷的系统。 这里主要通过一个银行通知用户月收支记录的小例子来介绍轻型J2EE框架Spring的主要内容、它所解决的问题和实现的方法。 Spring框架主要可以分为3个核心内容: 容器 控制反转(IoC ,Inversion of Control) 面向切面编程(AOP ,Aspect-Oriented Programming) 例子中依次对这些特性进行介绍,描述了软件模块化后存在的依赖与问题,以及Spring框架如何解决这些问题。 2

Spring的AOP

。_饼干妹妹 提交于 2020-02-04 19:12:34
一、AOP 1.概念 AOP:全称 Aspect Oriented Programming,即:面向切面编程。 AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 经典应用:事务管理、性能监视、安全检查、缓存 、日志等 2.作用及优势 在程序运行期间,不修改源码对已有方法进行增强 3.实现方式 aop底层将采用代理机制进行实现。 接口 + 实现类:spring采用 jdk 的动态代理Proxy。 实现类:spring 采用 cglib字节码增强。 4.AOP相关概念 ①Joinpoint( 连接点): 被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的连接点。 ②Pointcut( 切入点): 要对哪些 Joinpoint 进行拦截,即被增强的连接点。 ③Advice( 通知/ 增强): 拦截到 Joinpoint 之后所要做的事情,及增强代码。 通知的类型: 前置通知

Spring AOP

和自甴很熟 提交于 2020-02-04 04:15:20
  在前面的文章中已经和大家分享过关于spring IOC的知识,已经通过他的实现机制。我们都知道spring的两大核心:AOP(面向切面)和IOC(控制反转),本篇我们就一起学习一下AOP的知识的。   这里分享一个问题?当我们软件开发完成后,需要给每一个方法添加操作日志,我们怎么操作呢?我想最简单的方法就是在每一个方法的开始前将我们的日志逻辑加入,当然这是最直接的一种方法,但是他的缺点也是很明细,如果我们的方法有很多,添加这个日志逻辑就需要很多的工作量,显然这是一种不可取的方式。如何更好的解决这个问题呢?spring很好的帮我们处理了这个难点,通过切面编程,我们可以在我们需要的切面添加相应的业务逻辑已达到我们需要的效果。   接下来开始我们的内容,AOP的实现借助于JAVA的动态代理知识,我先通过动态代理的方式为大家介绍一下AOP的实现原理,以便大家更好的理解。   每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联到了一个handler,当我们通过代理对象调用一个方法的时候,这个方法的调用就会被转发为由InvocationHandler这个接口的 invoke 方法来进行调用。我们来看看InvocationHandler这个接口的唯一一个方法 invoke 方法: Object invoke(Object proxy,

Dubbo的使用及原理浅析.

随声附和 提交于 2020-02-04 04:10:19
Dubbo的使用及原理浅析. 前面几个博文中关于SSM 框架已经搭建完成, 这里来讲下项目中使用到的Dubbo以及自己了解到的关于Dubbo的一些知识. Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。 Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 Dubbo能做什么? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 Spring集成