切面

基于Spring AOP实现的权限控制

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

架构之AOP面向切面思想之集中式登陆架构设计

人盡茶涼 提交于 2020-01-31 13:34:18
一 、开始之前: 集中式登陆架构设计,此登陆并非登陆请求,而是判断当前是否登陆状态,如不是登陆状态,跳转登陆界面;否则进行对应的跳转逻辑 。该业务是一个全局业务,全局业务抽取到一个切面。 如果是OOP思想编程的话,采用 SharedPreferenced 来保存 isLogined 登陆状态,如果 isLogined == true 跳转到我的积分、我的专区等等。否则跳转到 LoginActivity 。 二 、实现方式一 :运行时动态代理的方式实现 采用运行时动态代理的方式实现,具体查看代码 CentralizedLoginArchitecture 重点介绍方式二: 三、实现方式二:AspectJ 1. 举例,有如下需求: 类似需求如:用户的行为统计分析,也是一个全局业务。也是可以通过AOP切面的思想来完成。 言归正传,开始 AspectJ , AspectJ 是面向切面编程的一个框架,拓展了Java的语言,并且定义实现AOP的语法。 2. 名词解释: 切入点,PointCut 通知,Advice 连接点,Joint Point, Before After Around 3. 集成 AspectJ 集成AspectJ可以通过插件的方式集成,也可以通过gradle直接集成。 1. 插件集成 新建主module app 新建android library aspectj 2.

SpringAOP

此生再无相见时 提交于 2020-01-29 06:23:07
AOP:面向切面编程,是Spring的两大基石之一。 AOP:作用 1、日志 按照以前的写法,会造成: 1)、代码混乱,越来越多的非业务需求(日志、验证等)加入后,原有的业务方法急剧膨胀,每个方法在处理核心业务逻辑的同时还必须兼顾其他的点。 2)、代码分散,以日志需求为例,只是为了满足这个单一的需求,就不得不在多个模块方法中加入重复相同的日志代码,如果日志需求变化,则要大量修改。 package aop; /** * @author chenpeng * @date 2018/6/3 21:33 */ public class ArithmeticCalculatorLogImpl implements ArithmeticCalculator { @Override public int add(int i, int j) { //每个方法都要这样加日志,麻烦 System.out.println("add....."+(i+j)); return i+j; } @Override public int sub(int i, int j) { System.out.println("sub....."+(i-j)); return i-j; } @Override public int mul(int i, int j) { System.out.println("mul....

Spring004--Spring AOP(mooc)

耗尽温柔 提交于 2020-01-28 19:24:59
一。Spring AOP概览 1.1。AOP(面向切面编程)是什么 1。 AOP是一种编程范式,而不是编程语言。   2。解决特写问题,不能解决所有问题   3。是OOP的补充,不是替代 除了面向切面编程,还有如下编程范式:   1。面向过程编程:如c/python   2。面向对象编程:如java/c++   3。函数式编程   4。事件驱动编程(GUI开发中比较常见)   5。面向切面编程 1.2。AOP(面向切面编程)解决的问题 1。DRY:Don't Repeat yourself 避免代码重复问题 2。SoC:Separation of Concerns 关注点分离 (1)。水平分离:展示层-》服务层-》持久层   (2)。垂直分离:模块划分(订单/库存等业务角度) (3)。切面分离:分离功能性需求与非功能性需求(把非功能性需求从功能性需求中剥离开来集中管理) 1.3。AOP(面向切面编程)好处 AOP好处即为“集中管理”: 1。集中处理某一关注点/横切逻辑; 2。可以方便的添加/删除关注点; 3。侵入性少,增强代码可读性及可维护性; 1.4。AOP(面向切面编程)应用声景 1。权限控制 2。缓存控制 3。事务控制(数据库事务控制) 4。审计日志(操作记录) 5。性能监控 6。分布式追踪 7。异常处理 以上为偏非功能性需求,特别适合AOP应用声景。 1.5。支持AOP

SpringAOP的简单实现

纵饮孤独 提交于 2020-01-28 00:30:19
AOP,即面向切面编程,springAOP采用的是动态代理的技术 其主要作用可以做一些与业务逻辑无关,但却必须的操作,例如日志记录,权限管理,检查数据,等等。首先,来做一个小实现来方便理解 首先,建立一个maven工程,导入对于的包,我直接全部贴出来 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lx</groupId> <artifactId>springmvcdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springmvcdemo</name> <url>http://maven.apache.org</url> <properties> <project.build

SSM框架-Spring

萝らか妹 提交于 2020-01-28 00:28:49
简介 Spring是一颗开源框架,为了解决企业应用程序开发复杂性而创建,主要优势是分层架构,简化J2EE开发; Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。 核心模块 Spring框架由七个定义明确的模块组成 核心容器(Core) Spring最核心的部分,提供了依赖注入(DependencyInjection)特征来实现容器对Bean管理,最基本的概念是BeanFactory,是任何Spring应用的核心,BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来。该模块包含Core、Beans、Context 和 Expesssion Language模块 Core 和 Beans是框架的基础部分 应用上下文模块(Context) 该模块构建于Core 和 Beans 之上,Context继承了Beans的特性,提供了一种类似于JNDI注册器的框架式的对象访问方法,为Spring核心提供了大量的扩展;ApplicationContext只是Context的一个接口 AOP模块 AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现,让你可以定义方法拦截器和切面,从而将逻辑代码分开,降低耦合度 JDBC抽象和DAO模块 JDBC模块提供了一个JDBC抽象层

AOP与IOC区别

你。 提交于 2020-01-26 23:34:08
Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。 • WEB层:SpringMVC • 业务层:Spring的IoC • 持久层:Spring的JDBCTemplate(Spring的JDBC模板,ORM模板用于整合其他的持久层框架) 从上面的简要介绍中,我们要知道Spring的核心有两部分: • IoC:控制反转

Spring--AOP的见解

北城余情 提交于 2020-01-26 14:49:19
AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源。 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码。 切面 :横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也可以认为是抽取了一些通用的东西当成一个“面”; 通知 :切面必须要完成的工作(切面中的每一个方法被称之为通知),可以认为抽取出来的切面(类)中的方法都是一个通知; 目标 :被通知的对象(业务逻辑),也就是被包裹的方法。或者说要实现的目标方法; 代理 :向目标对象应用通知之后创建的对象; 连接点 :程序执行的某个特定位置(比如调用某一方法之前,调用某一方法之后);    由以下两个基本信息来决定: 方法:这个方法就是表示程序的执行点(程序执行到了此处); 相对点:相对点执行的方位(即当前执行方法之前?之后?异常时?)      切点 :每个类都会有很多个连接点(因为一个类可以有多个方法,所以会存在很多个切入点); AOP通过切点定位到特定的连接点 连接点相当于数据库中的一条数据,是真实存在的。而切入点则是查询这个数据的方法。也就是说一个切点(条件)可以多个连接点(查到很多的记录) AOP的原理(注解版): @EnableAspectJAutoProxy:开启AOP功能; @EnableAspectJAutoProxy

6. Spring - AOP - 基本使用

人盡茶涼 提交于 2020-01-26 13:39:03
系列篇幅 1. Spring - IOC - 注册组件 2. spring - IOC - 依赖注入 3. Spring - IOC - 组件扫描规则 4. Spring - IOC - 组件的作用域、懒加载、条件判断 5. Spring - IOC - 组件的生命周期 6. Spring - AOP - 基本使用 前言 本文来整理一下AOP相关知识,这里不直接介绍理论了,我们看下日常工作中如何使用 Filter、Interceptor、ControllerAdvice、AOP的关系 流程说明 加入依赖 spring-aspects 将业务逻辑组件和切面类都加入到容器中,并将切面类加入注解 @Aspect 在切面类上的每一个通知方法上标注通知注解,告诉Spring何时何地运行 切入点表达式 开启基于注解的aop模式 @EnableAspectJAutoProxy 通知方法 说明 前置通知(@Before) 在目标 方法运行之前 运行 后置通知(@After) 在目标方法 正常结束/异常结束之后 运行 返回通知(@AfterReturning) 在目标方法 正常返回之后 运行 异常通知(@AfterThrowing) 在目标方法 出现异常之后 运行 环绕通知(@Around) 动态代理,手动推进目标方法运行 joinPoint.procced() 引入依赖 lombok 推荐:

使用spring的AOP实现web日志记录

馋奶兔 提交于 2020-01-25 10:35:53
一、AOP介绍 什么是AOP AOP:Aspect Oriented Programming,中文翻译为”面向切面编程“。面向切面编程是一种编程范式,它作为OOP面向对象编程的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、权限控制、缓存控制、日志打印等等。AOP采取横向抽取机制,取代了传统纵向继承体系的重复性代码 AOP把软件的功能模块分为两个部分:核心关注点和横切关注点。业务处理的主要功能为核心关注点,而非核心、需要拓展的功能为横切关注点。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点进行分离 使用AOP有诸多好处,如: 1.集中处理某一关注点/横切逻辑 2.可以很方便的添加/删除关注点 3.侵入性少,增强代码可读性及可维护性 AOP的术语 1.Join point(连接点) Spring 官方文档的描述: A point during the execution of a program, such as the execution of a method or the handling of an exception. In Spring AOP, a join point always represents a method execution. 程序执行过程中的一个点,如方法的执行或异常的处理。在Spring AOP中