aop

Spring中IOC和AOP的详细解释

孤街浪徒 提交于 2020-02-01 15:32:27
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂。 主要用到的设计模式有工厂模式和代理模式。 IOC就是典型的工厂模式,通过sessionfactory去注入实例。 AOP就是典型的代理模式的体现。 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分。 在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC);创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI),依赖注入和控制反转是同一个概念。 面向方面编程(AOP)是以另一个角度来考虑程序结构,通过分析程序结构的关注点来完善面向对象编程(OOP)。OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面。spring AOP

Spring中IOC和AOP的详细解释

浪尽此生 提交于 2020-02-01 15:32:11
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂。 主要用到的设计模式有工厂模式和代理模式。 IOC就是典型的工厂模式,通过sessionfactory去注入实例。 AOP就是典型的代理模式的体现。 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分。 在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC);创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI), 依赖注入和控制反转是同一个概念 。 面向方面编程(AOP)是以另一个角度来考虑程序结构 ,通过分析程序结构的关注点来完善面向对象编程(OOP)。OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面。spring AOP

对Spring aop的理解

早过忘川 提交于 2020-02-01 15:30:37
  记得有次面试中面试官问到,跟我谈谈spring aop,当时我就闷了,当时脑海里只浮现出切入点、切面、引入、通知等等一些很模糊的概念,于是结果可想而知。所以最近用下心来为自己做下记录方便以后查看(为以后的面试做好准备,呵呵),如果以下有什么疏忽的地方或者写的不好的地方,还请发现者多多指导。    什么是AOP   AOP (Aspect-OrientedProgramming),也就是面向切面编程。也可以这样理解,学java的应该都知道面向对象编程(oop),而OOP是从静态解读考虑程序结构,但AOP是从动态角度考虑程序运行过程。也可以说AOP是OOP的补充和完善。OOP引入了封装、继承和多态性等概念来建立一种对象层次结构, 用以模拟公共的一个集合。当我们需要为分散的对象引入公共行为的时候,则OOP显得无能为力了。也就是说,OOP允许你定义从上到下的关系,但并不适合从左到右的关系,例如日志功能。日志代码往往水平的散步在所有对象层次中,而与它所散步到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切代码,在oop设计中,他导致了大量代码的重复,而不利于各个模块的重用。   而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将哪些影响了多个类的公共行为封装到一个可重用模块

Spring IOC 和 AOP

人走茶凉 提交于 2020-02-01 15:26:24
一.  IOC   1. 概念及原理   IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要的外部资源的创建和管理,然后将其反转给应用程序.对象及其依赖对象的创建及维护都不需要在应用程序中实现,将其交给IOC容器去管理.传统的开发中,我们自己在对象内部创建依赖对象注入当前对象,完成依赖关系的维护;对于IOC而言,他强调是将主动变为被动,由IOC容器来负责依赖对象的创建和查找,由IOC容器来进行注入组合对象,我们只需要在相关的配置文件中维护对象的依赖关系即可.   DI: Dependency Injecton,即"依赖注入".其实IOC和DI本就是同一个概念的两种不同的表述,应用程序依赖容器提供的外部对象,容器将其依赖的外部资源在运行期注入到应用程序中;某个对象被调用时,其所依赖的对象由容器注入;   2. 优点   第一: 资源集中管理,实现资源的可配置和易管理,降低对象关系维护的复杂度.   第二: 降低了使用资源双方的依赖程度,也就是我们说的耦合度. 二.  AOP   1. 概念   AOP面向切面,是一种编程思想,AOP将软件系统分为两个部分,核心业务和扩展业务,在不改变原有代码的基础上,给核心业务添加扩展功能,即OCP原则.   2. 实现方式   实现AOP的技术,主要分为两大类:   一 是采用动态代理技术

Spring IOC(DI)和AOP学习笔记

自闭症网瘾萝莉.ら 提交于 2020-02-01 15:25:54
软件152 缑旭浩 首先概念阐述如下: IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要外部资源的创建和管理,然后将其反转给应用程序。对象及其依赖对象的创建及维护都不需要在应用程序中实现,将其交给IOC容器去管理。传统的开发中,我们自己在对象内部创建依赖对象并注入当前对象,完成依赖关系的维护;对于IOC而言,它强调是将主动变为被动,由IOC容器来负责依赖对象的创建和查找,由IOC容器来进行注入组合对象,我们只需要在相关的配置文件中维护对象之间的依赖关系即可。 DI: Dependency Injection,即“依赖注入”。其实IOC和DI本就是同一个概念的两种不同的表述,应用程序依赖容器提供的外部对象,容器将其依赖的外部资源在运行期注入到应用程序中;某个对象被调用时,其所依赖的对象由容器注入。 AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面编程。要理解AOP首先得弄明白代理的概念。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,将那些影响多个类的公共行为封装到一个可重用模块,并将其名为方面(Aspect)。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑封装起来的部分。以便于减少系统的重复代码,降低模块间的耦合度,并有利于系统维护。

Spring IOC/DI和AOP原理(转发:https://www.cnblogs.com/techroad4ca/p/5770073.html)

♀尐吖头ヾ 提交于 2020-02-01 15:24:47
一 IOC/DI   1. 概念及原理   IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要外部资源的创建和管理,然后将其反转给应用程序。对象及其依赖对象的创建及维护都不需要在应用程序中实现,将其交给IOC容器去管理。传统的开发中,我们自己在对象内部创建依赖对象并注入当前对象,完成依赖关系的维护;对于IOC而言,它强调是将主动变为被动,由IOC容器来负责依赖对象的创建和查找,由IOC容器来进行注入组合对象,我们只需要在相关的配置文件中维护对象之间的依赖关系即可。   DI: Dependency Injection,即“依赖注入”。其实IOC和DI本就是同一个概念的两种不同的表述,应用程序依赖容器提供的外部对象,容器将其依赖的外部资源在运行期注入到应用程序中;某个对象被调用时,其所依赖的对象由容器注入。   2. 优点   第一,资源集中管理,实现资源的可配置和易管理,降低对象关系维护的复杂度。   第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。 二 AOP   1. 概念和原理   AOP利用一种称为“横切”的技术,剖解开封装的对象内部,将那些影响多个类的公共行为封装到一个可重用模块,并将其名为方面(Aspect)。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑封装起来的部分

ssm maven spring AOP读写分离

只谈情不闲聊 提交于 2020-02-01 09:06:28
ssm maven spring AOP读写分离 总体流程 配置最开始写在pom.xml文件,解析到数据库配置文件,再解析到spring配置文件。 自定义注解DataSource;通过这个注解并且在spring、springmv配置文件添加AOP拦截,去定义拦截函数,根据参数切换数据源。 即通过注解实现AOP拦截controller,或者service层。从而实现读写分离。 具体见代码和注释。 1,pom.xml 配置数据库部分 <profile> <id>local</id> <properties> <db-url><![CDATA[jdbc:mysql://XXX?autoReconnect=true&autoReconnectForPools=true&useUnicode=true&characterEncoding=utf8]]></db-url> <db-driverClassName>com.mysql.jdbc.Driver</db-driverClassName> <db-username>XXX</db-username> <db-password>XXX</db-password> <aliyun.oss.endpoint><![CDATA[oss-cn-beijing.aliyuncs.com]]></aliyun.oss.endpoint>

基于Spring AOP实现的权限控制

杀马特。学长 韩版系。学妹 提交于 2020-02-01 08:45:28
1.AOP简介 AOP,面向切面编程,往往被定义为促使软件系统实现关注点的分离的技术。系统是由许多不同的组件所组成的,每一个组件负责一块特定的功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。例如日志、事务管理和安全这样的核心服务经常融入到自身具有核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件 下面介绍一下AOP相关的术语: 通知 : 通知定义了切面是什么以及何时使用的概念。Spring 切面可以应用5种类型的通知: 前置通知(Before):在目标方法被调用之前调用通知功能。 后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么。 返回通知(After-returning):在目标方法成功执行之后调用通知。 异常通知(After-throwing):在目标方法抛出异常后调用通知。 环绕通知(Around):通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。 连接点 :是在应用执行过程中能够插入切面的一个点。 切点 : 切点定义了切面在何处要织入的一个或者多个连接点。 切面 :是通知和切点的结合。通知和切点共同定义了切面的全部内容。 引入 :引入允许我们向现有类添加新方法或属性。 织入 :是把切面应用到目标对象,并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中

Spring基于AOP的事务管理

好久不见. 提交于 2020-02-01 08:35:10
Spring基于AOP的事务管理 事务    事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务就将回到最开始的状态,仿佛一切都没发生过。例如,老生常谈的转账问题,从转出用户的总存款中扣除转账金额和增加转出用户的账户金额是一个完整的工作单元,如果只完成扣除或者增加都会导致错误,造成损失,而事务管理技术可以避免类似情况的发生,保证数据的完整性和一致性。同样在企业级应用程序开发过程中,事务管理技术也是必不可少的。   事务有四个特性:ACID 原子性(Atomicity):事务是一个原子操作,有一系列动作组成。原子性保证所有动作都完成,或者不执行任何动作。 一致性(Consistency):一旦事务完成(不论成败),系统必须确保它所建模的业务处于一致的状态。 隔离性(Isolation):可能有很多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。 持久性(Durability):一旦事务完成,无论系统发生生什么系统错误,它的结果都不会受到影响,保证能从系统崩溃中恢复过来,通常事务的结果会被写入到持久化存储器中。   Spring事务是基于面向切面编程(Aspect Oriented Programming,AOP)实现的(文中会简单讲解AOP)。Spring的事务属性分别为传播行为、隔离级别、回滚规则

Spring AOP两种实现方式

不想你离开。 提交于 2020-02-01 03:52:50
一. AOP 概念:    Spring AOP 即Aspect Oriented Programming(面向切面编程), 实现方式分为两种:  1. 注解(Annotation)  2. 配置(Configure) 二. 应用场景:  1. 权限管理;  2. 表单验证;  3. 事务管理;  4. 信息过滤;  5. 拦截器;  6. 过滤器;  7. 日志等等;三. AOP实现:  1. 基于Annotation的实现   package com.myframework.xj.security.service; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype