切面

SpringAOP(转)

こ雲淡風輕ζ 提交于 2020-03-16 18:49:35
转https://www.baidu.com/link?url=gO7UsA_Q5oAGHPW8WiI5D-GtM-DLNEj2hJ1BMEI5SQBLLaxpDaInOUNtGup4Qx_CKB2GCEq_7IgsJiyhExCGRa&wd=&eqid=a8637b870032f6ac000000035d706ed1 1.什么是SpringAOP 什么是aop:Aspect Oriented Programming的缩写,面向切面编程,通过预编译和动态代理实现程序功能的 统一维护的一种技术 主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等 2.SpringAOP框架的用途 提供了声明的企业服务,特别是EJB的替代服务的声明 允许用户控制自己的方面,以完成OOP和AOP的互补使用 OOP:模拟真实的世界,一切皆是对象 3.AOP的实现方式 下边这两种Spring都是支持的 3.1预编译 -AspectJ 完整的面向切面编程解决方案--》spring不是完整的解决方案,不过spring提供比较好的实现方式,当然spring是同时也是支持这种方式的,这也是一种常用的方式 3.2运行期间动态代理(JDK动态代理,CGLib动态代理) -SpringAop,JbossAop Spring的AOP使用纯java实现,无需特殊的编译过程,不需要控制类的加载器层次

Spring面试题

假如想象 提交于 2020-03-16 09:16:59
69道Spring面试题和答案 原文地址 译者:深海(1422207401@qq.com) 校对:方腾飞 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量: Spring 是轻量的,基本的版本大约2MB。 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器: Spring 包含并管理应用中对象的生命周期和配置。 MVC框架 :Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理: Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: Spring 提供方便的API把具体技术相关的异常(比如由JDBC

spring面试题

梦想的初衷 提交于 2020-03-16 08:41:43
1.选择使用Spring框架的原因? 使用Spring: 第一是使用它的IOC功能,在解耦上达到了配置级别。 第二是使用它对数据库访问事务相关的封装。 第三就是各种其他组件与Spring的融合,在Spring中更加方便快捷的继承其他一些组件。 2.Spring 是如何管理事务的? spring的事务声明有两种方式,编程式和声明式。spring主要是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量。 3.Spring IoC容器配置Bean的方式? 答: 基于XML文件进行配置。 基于注解进行配置。 基于Java程序进行配置(Spring 3+) 4.Bean 是如何被管理的? 在Spring框架中,一旦把一个bean纳入到Spring IoC容器之中,这个bean的生命周期就会交由容器进行管理,一般担当管理者角色的是BeanFactory或ApplicationContext。认识一下Bean的生命周期活动,对更好的利用它有很大的帮助。 概括来说主要有四个阶段:实例化,初始化,使用,销毁。 5.阐述Spring框架中Bean的生命周期? ApplicationContext容器中,Bean的生命周期流程如上图所示,流程大致如下: 1.首先容器启动后

22-Spring源码解析之AOP(1)——@EnableAspectJAutoProxy注解原理

早过忘川 提交于 2020-03-12 08:54:25
Spring版本: <version>5.2.1.RELEASE</version> 目录 一、`AOP`概览 1. 例子 1.1 创建用于拦截的`Bean` 1.2 切面类 1.3 配置类 1.4 测试类 1.5 测试结果 二、 `@EnableAspectJAutoProxy`注解 三、解析`@EnableAspectJAutoProxy`注解 上一篇: 21-Spring源码解析——IOC容器创建与Bean生命周期总结 截至到本篇文章,我终于把 IOC 写完啦!现在开启 Spring 的第二个百宝箱: AOP 一、 AOP 概览 我们知道,使用 面向对象编程( OOP ) 有一些弊端,当需要为多个不具有继承关系的对象引入同一个公共行为的时候,例如:日志、安全检测等,我们只有在每个对象里引用公共行为,这样程序中就产生了大量的重复代码,程序就不便于维护了,所以就有了一个对面向对象编程的补充,即 面向切面编程( AOP ) , AOP 所关注的方向是横向的,不同于 OOP 的纵向。 Spring 2.0 采用 @AspectJ 注解对 POJO 进行标注,从而定义了包含 切点信息 和 增强横切逻辑 的切面。 Spring 2.0 将这个切面织入到匹配的目标 Bean 中。 下面,我们先来直观地浏览一下 Spring 中 AOP 的简单示例。 1. 例子 我们这个例子比较纯粹

使用AOP切面打印系统日志

血红的双手。 提交于 2020-03-10 22:19:01
拦截接口的调用 打印日志 @Aspect @Component @Slf4j public class MethodLogAspect { @Around ( value = "execution(* com.xxx.controller.*.*(..))" ) public Object around ( ProceedingJoinPoint point ) { StopWatch clock = new StopWatch ( ) ; clock . start ( ) ; String methodPrefix = point . getSignature ( ) . toString ( ) ; log . info ( methodPrefix + ", 参数值:" + Arrays . toString ( point . getArgs ( ) ) ) ; Object returnValue ; try { returnValue = point . proceed ( ) ; } catch ( Throwable throwable ) { log . error ( methodPrefix + " invoke controller error " , throwable ) ; returnValue = Result . failed ( "系统错误"

18、spring注解学习(AOP)——AOP功能测试

為{幸葍}努か 提交于 2020-03-10 13:19:46
AOP-AOP功能测试 AOP : 【动态代理】指程序运行期间动态的将某段代码切入到制定方法位置进行运行的编程方式。 导入AOP模块:Spring AOP(spring-aspects) 定义一个业务逻辑类(Mathcalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行之后等) 定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator(div)运行到哪里,然后执行 方法通知: 前置通知(@Befor):LogStart 后置通知(@After):LogEnd 返回通知(@AfterReturning):LogReturn 异常通知(@AfterThrowing):LogException 环绕通知(@Aound):动态代理,手动推进目标方法运行(joinPoint.procced()) 将切面类的目标犯法标注何时何地运行(通知注释); 将切面类和业务逻辑类(目标方法所在类 )加入到容器类; 配置类中@EnableAspectJAutoProxy 开启基于注解的AOP模式 导入spring-aspects依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3

Spring核心技术之Ioc和AOP

烂漫一生 提交于 2020-03-10 07:52:08
一、Spring应用环境的配置: 1. 在classpath中添加以下包: 1) SPRING_HOME/dist/spring.jar、 2) SPRING_HOME/lib/jakarta-commons/commons-logging.jar 3) SPRING_HOME/lib/log4j/log4j-1.2.xx.jar 2.在classpath中添加Spring的配置文件:applicationContext.xml 在SPRING_HOME/samples/jpetstore/war/WEB-INF目录下有样板文件。 二、IoC容器: 1. IoC概念:反向控制、控制反转。对象不需要主动去查找依赖类的实例。而是由其它应用给它注入。 DI:依赖注入。 2. Spring对IoC的支持:Spring 提供了BeanFactory和ApplicationContext这两种IoC容器,来帮助你管理Bean、Bean之间的依赖关系以及Bean的生命周期。 三、Spring中IoC: 1. Bean装配:在Spring配置文件中用<bean>标记来装配一个Bean. <bean id="Bean在Spring容器中的唯一标识" class="Bean类的全限定名">...</bean> 2. 用setter方法注入它的依赖类: 1)

AOP 和 前置通知,后置通知

本小妞迷上赌 提交于 2020-03-09 17:50:42
Spring 1、AOP:中文名称面向切面编程 2、英文名称:(Aspect Oriented Programming) 3、正常程序执行流程都是纵向执行流程   3.1 又叫面向切面编程,在原有纵向执行流程中添加横切面   3.2 不需要修改原有程序代码     3.2.1 高扩展性     3.2.2 原有功能相当于释放了部分逻辑,让职责更加明确 4、面向切面编程是什么??   4.1 在程序原有纵向流程中,针对某一个或某一些方法添加 通知,形成横切面过程,就叫做面向切面编程。 5、常用概念   5.1 原有功能:切点,pointcut   5.2 前置通知:在切点之前执行的功能 before advice   5.3 后置通知:在切点之后执行的功能 after advice   5.4 如果切点执行过程中出现异常,会触发异常通知 throws advice   5.5 所有功能总称叫做切面   5.6 织入:把切面嵌入到原有功能的过程叫做织入 6、spring提供了2种AOP实现方式   6.1 Schema-based :     6.1 每个通知都需要实现接口或类     6.2 配置spring配置文件时 在<aop:config>配置   6.2 Aspectj     6.2.1 每个通知不需要实现接口或类     6.2.2 配置spring配置文件是在<aop

Spring第五章:AOP(Schema-based)

Deadly 提交于 2020-03-09 17:50:30
AOP 链接:https://pan.baidu.com/s/1qS-AaZHSLUwxYSjc9PHDYA 提取码:np2q   1.AOP: 中文名称面向切面编程   2. 英文名称 :(Aspect Oriented Programming)   3. 正常程序执行流程都是纵向执行流程     3.1 又叫面向切面编程 , 在原有纵向执行流程中添加横切面     3.2 不需要修改原有程序代码       3.2.1 高扩展性       3.2.2 原有功能相当于释放了部分逻辑 . 让职责更加明确 .          4. 面向切面编程是什么 ?     4.1 在程序原有纵向执行流程中 , 针对某一个或某一些方法添加通 知 , 形成横切面过程就叫做面向切面编程 .   5. 常用概念     5.1 原有功能 : 切点 , pointcut     5.2 前置通知 : 在切点之前执行的功能 . before advice     5.3 后置通知 : 在切点之后执行的功能 ,after advice     5.4 如果切点执行过程中出现异常 , 会触发异常通知 .throws advice     5.5 所有功能总称叫做切面 .     5.6 织入 : 把切面嵌入到原有功能的过程叫做织入   6.spring 提供了 3 种 AOP 实现方式     6.1

对AOP切面的一些整理与理解

三世轮回 提交于 2020-03-09 17:41:49
首先上一张AOP的图示 一:几个重要的概念 1> 切面:横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象[验证切面。日志切面] 2> 通知:切面中的每个方法 3> 目标:被通知的方法(业务逻辑中的方法) 4> 代理(proxy):向目标对象应用通知之后创建的对象 5> 连接点:程序运行前的某个特定位置(详细的物理存在):如某个方法调用前,调用后,方法抛出异常后等。 连接点由两个信息确定:方法表示的程序运行点相对点表示的方位。 6> 切点:每一个类会有多个连接点(看不到摸不到,非详细物理存在)[通过切点能够定位到非常多个连接点]即:连接点是程序类中客观存在的事务。 AOP通过切点定位到特定的链接点。 类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一一相应的关系,一个切点匹配多个连接点。切点通过接口进行描写叙述。使用类和方法作为连接点的查询条件。 二:Spring AOP 1)增加jar包 2)在配置文件里增加aop的命名空间(namespace),完整命名空间例如以下: <?xml version="1.0" encoding="GB18030"? > <beans xmlns=" http://www.springframework.org/schema/beans " xmlns:xsi=" http://www.w3.org/2001