切面

SpringAop基础知识

我只是一个虾纸丫 提交于 2020-03-23 07:13:25
一:什么是AOP?   AOP(Aspect Oriented Programming)被称为面向切面编程。    AOP把软件系统分为两个部分: 核心关注点和横切关注点。 业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。    Aop 的作用在于分离系统中的核心关注点和横切关注点。业务逻辑不必关心日志、权限等横切关注点的处理,降低了程序的耦合度,提高可维护性;并且Aop提供了易配置、可插拔的特性,使用十分方便,是面向对象编程的有效补充。 二、AOP中的一些基础概念   连接点:就是一个个方法,通俗来说,所有的方法都是连接点。(Spring AOP 只能使IOC容器中的Bean的方法)    切入点:切入点是一个匹配连接点的断言或者表达式。通俗来说,就是在哪些连接点上来执行通知。   通知:通知(advice)是你在你的程序中想要应用在连接点上应用横切关注点(日志、事务等)的实现。   切面:其实就是共有功能的实现。如日志切面、权限切面、事务切面等。就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度的一个Java类。   织入:将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程可以发生在编译期

spring --AOP

给你一囗甜甜゛ 提交于 2020-03-20 06:44:42
在项目中存在例如安全验证,日志文件这类可以独立的横切点的模块,spring的aop将这些横切点封装到一个类中,然后再程序运行期植入到对象中。 spring将默认的aop实现是jdk的动态代理。 横切面关注点:在系统中可以独立的一些模块 切面(aspect):就是将横切面关注点封装到一个类中,那个这个类就是切面,那么这个类就称为切面类。 advice:横切面关注点的实现 advice可以加在目标方法之前,也可加在目标方法之后,或者加在抛异常的地方 pointcut:表示advice的应用范围 织入:把切面应用到目标对象的过程叫做织入 连接点:将切面应用到某些方法中,该方法称为连接点。 target object:真实得实现类 proxy:代理类 introduction:动态的添加方法 如果在类中添加了一些可以独立的服务,那么这个服务就叫做横切性关注点;而将横切性关注点封装到一个类中,那么这个类就称为切面(切面类);在切面类中实现横切性关注点的方法,那么该方法就称为advice,advice可以在目标对象之前执行,或之后执行,或抛出异常时执行,当指定advice应用在spring的哪些方法上即(joinpoint);把切面应用到目标对象的过程叫做织入。 动态代理实例: UserManager接口: package com.jzq.spring; public interface

Spring中AOP的模拟实现

无人久伴 提交于 2020-03-20 06:38:52
什么是AOP? 面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2.spring支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的补充, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,,从而获得步骤之间的逻辑划分。 aop框架具有的两个特征: 1.各个步骤之间的良好隔离性 2.源代码无关性 前提:要实现AOP的模拟就要知道动态代理,Spring中使用了两种动态代理方式,一种是基于JDK的动态代理,一种是基于CGlib的动态代理。为什么会有两种,那是因为JDK的动态代理只能是 针对接口。 先看下面的代码dao层 Java代码 package com.lbx.dao; import com.lbx.model.User; public interface UserDAO { public void save(User user); //public void delete(); } dao实现层 Java代码 package com.lbx.dao.impl; import com.lbx.dao

Spring 入门

半城伤御伤魂 提交于 2020-03-19 00:12:59
Spring是一个轻量级框架,大大简化了java企业级开发,提供了强大稳定的功能,又没有带来额外的负担,让人们再使用它做每件事的时候都有得体和优雅的感觉。 Spring的两个目的:1)让现有技术更易于使用; 2)是促进良好的编程习惯。 一. Spring IoC   1.理解”控制反转“     控制反转也成为依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。     依赖,是再代码中一般指通过局部变量,方法参数,返回值等建立的对于其他对象的调用关系。    扩展:1.除了ClassPathXmlApplicationContext,ApplicationContext接口还有其它实现类。例如:FileSystemXmlApplicationContext也可以用于加载Spring配置文件。       2.除了ApplicationContext及其实现类,还可以通过BeanFactory接口及其实现类对Bean组件实施管理。 二. 理解”面向切面编程“(AOP)   1.面向切面编程(AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件, 常见的AOP抽离出来的组件有: 日志模块;事务模块;安全模块等.   2.简单的说就是在不改变源程序的基础上为代码增加新的功能,对代码进行增强处理。它的设计思想来源于代理设计模式。     基本概念:      

谈谈你对spring框架的理解?

无人久伴 提交于 2020-03-18 17:48:49
我认为spring 就是一个框架的集成器,通常使用spring 来管理action 层和DAO 层。Spring本身有很多的组件,比如:MVC、IOC、AOP、DaoSupport等等。IOC 本身也就是一个容器,它管理了所有的bean 和bean 之间的依赖关系。 IOC 也叫作控制反转,核心是BeanFactory。也就意味着IOC 是基于工厂模式设计的,同时这个工厂生产的bean 默认是单例的。如果想修改单例变成多实例,则需要修改bean 的scope属性,值是prototype。在没有使用IOC 以前,程序员需要自己在对应的类中new 相关依赖的对象。 比如UserAction依赖于UserService完成业务操作,而UserService又依赖于UserDAO完成数据库操作。所以需要在action 中new servcie,在service 中new DAO。这样的方式,是由程序员来管理了对象的生命周期和他们之间的依赖关系,耦合度很高,不利于程序的拓展。所以通过IOC 来管理bean 和依赖关系,可以解耦合。 我们将所有的action、service 和dao等类定义成IOC 的一个bean 组件,此时类的实例化就交给了IOC 的beanFactory,由工厂来负责实例化bean 的对象。IOC 有三种注入方式,属性注入、构造器注入和接口注入。接口注入只是spring

[Java] Spring

ⅰ亾dé卋堺 提交于 2020-03-18 17:44:50
背景 JavaEE 应用框架 基于IOC和AOP的结构J2EE系统的框架 IOC(反转控制):即创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象,是Spring的基础 DI(依赖注入):拿到的对象的属性,已经被注入好相关值了,直接使用即可、 AOP(Aspect Oriented Program 面向切面编程) 功能分为核心业务功能(登录、增删改查)和周边功能(性能统计、日志、事务管理) 周边功能在Spring的面向切面编程AOP思想里,即被定义为 切面 面向切面编程AOP的思想里面,核心业务功能和切面功能分别 独立进行开发 然后把切面功能和核心业务功能 "编织" 在一起 过程 新建项目 添加依赖jar包 准备 pojo 配置 applicationContext.xml 来源: https://www.cnblogs.com/cxc1357/p/12518143.html

spring中aop的前值增强

旧时模样 提交于 2020-03-18 11:25:39
Spring AOP的几个概念 1.切面(Aspect):切面就是一个关注点的模块化,如事务管理、日志管理、权限管理等; 2.连接点(Joinpoint):程序执行时的某个特定的点,在Spring中就是一个方法的执行; 3.通知(Advice):通知就是在切面的某个连接点上执行的操作,也就是事务管理、日志管理等; 4.切入点(Pointcut):切入点就是描述某一类选定的连接点,也就是指定某一类要织入通知的方法; 5.目标对象(Target):就是被AOP动态代理的目标对象; spring中包括前置增强、后置增强、和环绕增强等,而前置增强,我们可以讨论一下他们的使用: 我的代码如下: 定义一个接口IHello.java package Spring; public interface IHello { //定义一个接口 public void hello(String name); } 创建一个类实现接口HelloSpacker.java package Spring; public class HelloSpacker implements IHello{ //继承该接口,并且实现接口的方法 @Override public void hello(String name){ System.out.println("hello,"+name); } }

Spring学习 - 03 Spring AOP

筅森魡賤 提交于 2020-03-17 08:55:57
第三章 Spring AOP 3.1 Spirng AOP简介 3.1.1 什么是AOP 概念:AOP 的全称是 Aspect-Oriented Programming ,即 面向切面编程 (也称面向方面编程)。 它 是面向对象编程 (OOP) 的一种 补充 ,目前已成为一种比较成熟的编程方式 。 横向抽取机制 :将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方 ,而传统的 OOP只能实现父子关系的纵向的重用。 **地位:**虽然AOP是一种新的编程思想,但不是OOP的替代品,而是其的延伸和补充。 意义: AOP 的使用,使开发人员在编写业务逻辑时可以 专心于核心业务 ,而不用过多地关注于其 他业务逻辑的实现,这不但 提高了开发效率 ,而且 增强了代码的可维护性 。 最流行的两个AOP框架: Spring AOP 纯Java实现,不需要专门的编译过程和类加载器,在运行期间通过代理的方式向目标类织入增强的代码。 AspectJ 基于Java语言的AOP框架,从Spring2.0开始,SpringAOP引入了对AspectJ的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入。 3.1.2 AOP术语 在学习使用 AOP 之前,首先要了解一下 AOP 的专业术语 。 这些术语包括

使用Spring进行面向切面编程(AOP)

女生的网名这么多〃 提交于 2020-03-17 08:36:43
本文转载自: 使用Spring进行面向切面编程(AOP) 前言 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。 (这些关注点术语通常称作 横切(crosscutting) 关注点。) Spring的一个关键的组件就是 AOP框架。 尽管如此,Spring IoC容器并不依赖于AOP,这意味着你可以自由选择是否使用AOP,AOP提供强大的中间件解决方案,这使得Spring IoC容器更加完善。 Spring 2.0 AOP Spring 2.0 引入了一种更加简单并且更强大的方式来自定义切面,用户可以选择使用基于模式(schema-based)的方式或者使用@AspectJ注解。 这两种风格都完全支持通知(Advice)类型和AspectJ的切入点语言,虽然实际上仍然使用Spring AOP进行织入(Weaving)。 本章主要讨论Spring 2.0对基于模式和基于@AspectJ的AOP支持。请查阅"AOP声明风格的选择"一节获取 为你的应用选择适当的声明风格的建议。Spring 2.0完全保留了对Spring 1.2的向下兼容性,下一章 将讨论 Spring 1.2 API所提供的底层的AOP支持。

Java单体应用 - 常用框架 - 02.Spring

感情迁移 提交于 2020-03-17 01:54:16
原文地址: http://www.work100.net/training/monolithic-frameworks-spring.html 更多教程: 光束云 - 免费课程 Spring 序号 文内章节 视频 1 概述 - 2 体系结构 - 3 特点 - 4 Spring与IoC - 5 第一个Spring应用程序 - 请参照如上 章节导航 进行阅读 1.概述 Spring 的主要作用就是为代码“ 解耦 ”,降低代码间的耦合度。 根据功能的不同,可以将一个系统中的代码分为 主业务逻辑 与 系统级业务逻辑 两类,它们各自具有鲜明的特点: 主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低; 系统级业务相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如日志、安全、事务等,复用性强。 Spring 根据代码的功能特点,将降低耦合度的方式分为了两类: IoC 与 AOP 。 IoC 使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring 容器统一管理,自动“注入”。 而 AOP 使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成“织入”。 Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架