aop

spring面向切面编程(AOP)

谁说我不能喝 提交于 2020-02-19 04:04:29
AOP(Aspect Oriented Programing)面向切面编程 AOP是一种编程范式,隶属于软工范畴,指导开发 者如何组织程序结构 AOP弥补了OOP的不足,基于OOP基础之上进行 横向开发 AOP联盟 一、OOP范式编程 OOP规定程序开发以类为模型,一切围绕对象进行, OOP中完成某个任务首先构建模型,基于模型展开 业务 OOP主要应用于WEB开发,围绕OOP的主思想, 对开发过程进行了分层设计 二、AOP范式编程 AOP范式编程研究的不是层与层之间的关系,也不 是每层内部如何开发,AOP主要关注同一层面的各 个不同功能模块之间的共性功能。 AOP时代的到来,使开发模块化的思想进行了进一 步的提升,从刀耕火种的纯手工开发阶段,向半自 动化/自动化阶段进行了一个大的突破。IT研发朝着 “插拔式组件体系结构”又近了一步。 三、基本概念(重点) 1、连接点(Joinpoint) 2、切入点(Pointcut) 3、通知(Advice) 4、目标对象(Target Object) 5、AOP代理(AOP Proxy) 6、织入(Weaving) 7、切面(Aspect) 1、连接点(Joinpoint) ①、程序运行过程中,JVM负责程序运行。执行到某个 方法时,JVM能识别当前执行的是哪个方法。这些 定义在类中的方法,每个具有独立的功能,在AOP 中

10.spring声明式事务

时光毁灭记忆、已成空白 提交于 2020-02-19 00:27:00
一.回顾事务 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎! 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。 1.事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用。 2.事务四个属性ACID 原子性(atomicity) 事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用 一致性(consistency) 一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中 隔离性(isolation) 可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏 持久性(durability) 事务一旦完成,无论系统发生什么错误,结果都不会受到影响。通常情况下,事务的结果被写到持久化存储器中 二.Spring中的事务管理 1.测试事务的一致性 步骤:(在上一个的博客项目的基础上) 在UserMapper接口中添加两个方法 addUser:添加用户 deleteUser:删除用户 在UserMapper.xml中编写SQL语句,故意将delete写成deletes导致出错 修改UserMapperImpl类 添加addUser方法 添加deleteUser方法 修改selectUser方法,让它先添加一个用户

Spring-Aop

寵の児 提交于 2020-02-18 13:44:32
一.AOP(Aspect Oriented Programing)面向切面编程 AOP的终极目标:让我们可以专心做事 下面通过一个例子来介绍AOP的具体使用 案例的要求:使用AOP实现日志记录系统 , 核心模块 和 增强 单独 开发 ,运行时再组装 首先定义接口和方法 接口和实现类中的代码,我放在一起了,应该比较简单 package demo04.dao; /** * Created by mycom on 2018/3/5. */ public interface IHelloDao { public void doSome(); } package demo04.dao;/** * Created by mycom on 2018/3/5. */public class HelloDaoImpl implements IHelloDao { public void doSome() { System.out.println("已经成功加入到DB中了"); }} package demo04.service;/** * Created by mycom on 2018/3/5. */public interface IHelloService { public void doSome();} package demo04.service;import demo04.dao

Spring 入门 AOP

*爱你&永不变心* 提交于 2020-02-17 22:36:20
通过一个小例子演视怎么使用 Spring 现实面向切面编程。 导入 Spring 所需要的包 spring-framework-2.5.6 版需要导入以下包: 1.----- spring.jar 2.----- commons-logging.jar 3.----- aspectjrt.jar 4.----- aspectjweaver.jar 5.----- cglib-nodep-2.1_3.jar spring-framework-3.2.4 版需要导入以下包: 1.----- spring-core-3.2.4.RELEASE.jar 2.----- spring-beans-3.2.4.RELEASE.jar 3.----- spring-context-3.2.4.RELEASE.jar 4.----- spring-expression-3.2.4.RELEASE.jar 5.----- commons-logging.jar 6.----- aspectjweaver.jar 7.----- aspectjrt.jar 8.----- aopalliance.jar(spring项目里不提供,要到网上下) 代码: Book.java: public class Book { private int id; private String name; //省略get

SSM三大框架整合

夙愿已清 提交于 2020-02-17 18:58:58
1、搭建整合环境   SSM整合有多种方式,这里选择XML + 注解的方式,SSM三大框架使用版本:spring-webmvc5.0.2、spring5.0.2、mybatis3.4.5   1.创建数据库和表结构 create database ssm; use ssm; create table account(   id int primary key auto_increment,   name varchar(20),   money double(20,2) );   2.创建maven工程,定义pom.xml文件     设置编译插件和Tomcat插件: <properties>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   <maven.compiler.source>1.8</maven.compiler.source>   <maven.compiler.target>1.8</maven.compiler.target> </properties> <!-- 设置编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin<

认识Java Spring 框架

自作多情 提交于 2020-02-17 04:17:25
  谈起Java 开发总是离不开各种框架,当我们在使用Java初期就被各种框架的包围着,而.Net开发就比较简单了,从WinForm到Asp.Net再到APS.Net Mvc,一气呵成,开发起来那叫一个爽,但是也带来了一些问题,比如,.Net 开发者使用微软已经封装好的类库,程序员在日常的开发过程中,都不知道自己所使用的类库有多么精妙,但是Java就不一样了,它是完全开源的,可以按照自己的需求加载适合的类库,作为开发者就可以知道大牛们写的牛叉代码,也可以看到代码的重构的美妙之处。今天我们就来谈一谈Java的Spring框架,有出入的地方希望各位给予指出。 1. 什么是Spring框架   百度百科的解释是:Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。从字面意思上我们知道他是为了解决开发复杂性,他是如何解决复杂性的呢,说到这问题我们就必须从Spring的特性说起了   Spring特性: 主要优势是分层结构,Spring框架总共有七部分组成,每一部分都可以独立拆分出来(非严格的说),分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制翻转(IOC

0216 aop和打印数据库执行日志

徘徊边缘 提交于 2020-02-17 01:23:31
需求 maven依赖 <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.8.7</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.2-jre</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <

Spring AOP(面向切面编程)

一曲冷凌霜 提交于 2020-02-16 02:49:20
1.Spring 的 AOP 简介 1.1 什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 1.2 AOP 的作用及其优势 作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强 优势:减少重复代码,提高开发效率,并且便于维护 1.3 AOP 的底层实现 实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。 1.4 AOP 的动态代理技术 常用的动态代理技术 JDK 代理 : 基于接口的动态代理技术 cglib 代理:基于父类的动态代理技术 1.5 JDK 的动态代理 ①目标类接口 public interface TargetInterface { public void method ( ) ; } ②目标类 public class

Spring事务管理

£可爱£侵袭症+ 提交于 2020-02-15 11:05:06
1、事务( https://www.cnblogs.com/zhai1997/p/11710082.html ) (1)事务的特性:acdi (2)事务的并发问题:丢失修改,脏读,不可重复读 (3)事务的隔离级别:1、2、4、8 2、Spring的事务管理 (1)Spring封装了事务管理的代码:打开事务、提交事务、回滚事务 在我们学习的不同阶段(JDBC、Hibernate),对事物处理的方法是不一样的,为了解决这个问题,Spring提供了一个接口,PlatformTransactionManager(平台事务管理器), 该接口可以根据不同的平台提供不同的方法来处理事务, (2)Spring管理事务的属性 事务的隔离级别:1:读未提交、2:读已提交、4:可重复读、8:串行化 本次事务是否只读:true:只读 事务的传播行为: PROPAGATION REQUIRED 支持当前事务,如果不存在就新建一个(默认) PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务PROPAGATION MANDATORY 支持当前事务,如果不存在,抛出异常PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务PROPAGATION

Spring配置文件beans.xml头部配置解释

北城余情 提交于 2020-02-15 08:15:13
比如一个标准的beans.xml文件如下所示: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans> 解释: 1、【xmlns="http://www.springframework.org/schema/beans"】 声明xml文件默认的命名空间,表示未使用其他命名空间的所有标签的默认命名空间。 2、【xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"】 声明XML Schema实例,声明后就可以使用schemaLocation属性。 3、【xsi:schemaLocation="http://www.springframework.org/schema/beans http://www