1什么是AOP:AOP是面向切面编程,也就是说面向某个功能模块编程,典型的应用就是Spring的声明式事务,
Spring的AOP事务解析:
在以前的事务管理是要融合在逻辑代码中的,在逻辑代码中决定事务是否提交或者回滚,这样很容易造成代码难以维护,代码冗余
但是使用spring的声明式事务后,只需要在数据库处理方法上注解事务,就可以对操作进行管理,事务的设置和逻辑代码分开,容易维护
2AOP有什么作用
:面向切面编程,例如某个功能点,我们只需抽取横切关注点,然后让需要处理这些功能点的方法来使用代理的方式调用

3AOP有什么组成
1切面:横切关注点被模块化的对象---功能模块化组成的对象
2通知:就是切面需要完成的功能---就是功能的实现方法1、方法2...
3连接点:就是程序执行的某个特定位置,例如方法前方法后,也是通知所关心的位置
4目标:被通知的对象,也是连接点所在的对象
5代理(Proxy): 向目标对象应用通知之后创建的对象
4AOP怎样使用
1:抽取横切关注点:也就是抽取我们需要面向切面编程的功能,然后模块化对象
2:然后把模块化对象声明为切面
3:把模块对象细粒化,把功能细分为各个方法
4:声明通知和通知的连接点
登录示例:

登录前后需要调用某一个动能---->也就是横切关注点
 1切面:横切关注点模块化的对象--》loginCheck

package com.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component; @Aspect
@Component
public class LoginCheck { public void beforeLogin() {
System.out.println("登录前检查---------->");
} public void afterLogin() {
System.out.println("登录后检查---------->");
}
}

2把模块对象的功能细粒化,细分为各个方法上面代码已经细化粒化的

3声明通知和连接点:

@Before(value ="execution(* com.aop.entityService.*(..))")
public void beforeLogin(JoinPoint joinPoint) {
System.out.println(joinPoint.getSignature().getName()+"登录前检查---------->");
}

@After(value ="execution(* com.aop.entityService.*(..))")
public void afterLogin(JoinPoint joinPoint) {
System.out.println(joinPoint.getSignature().getName()+"登录后检查---------->"+joinPoint.getStaticPart().getSignature().getDeclaringType().getName());
}

login类:

package com.aop;

import org.springframework.stereotype.Repository;

@Repository
public class entityService { private int id;
private String name="jeremy"; public void login() {
System.out.println(this.name+"登录了------>");
} }

测试代码:

public static void main(String[] args) throws SQLException {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
entityService entityService=applicationContext.getBean(entityService.class);
entityService.login();
}

测试:

spring的AOP个人理解和使用的更多相关文章

  1. Spring的AOP简单理解

    最近在研究spring的AOP,翻译出来的意思是面向切面. 总结如下: 所谓AOP就是将分散在各个方法处的公共代码提取到一处, 并通过类似拦截器的机制实现代码的动态整合.可以简单地想象成, 在某个方法 ...

  2. 关于Spring中AOP的理解

    AOP简介[理解][重点] 1.AOP(Aspect Oriented Programing)面向切面/方面编程 2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计 3.AOP联 ...

  3. Spring容器AOP的理解

    一句话理解:根据被代理对象信息通过Proxy动态生成我们具体的代理类. 实现就动态代理.那动态代理是什么呢? 动态代理其实并不是什么新鲜的东西,学过设计模式的人都应该知道代理模式,代理模式就是一种静态 ...

  4. Spring的AOP细节理解

    什么是AOP?AOP:是面向切面编程,是对面向对象编程(oop)的一种补充,为什么需要AOP?例如在我们做一个计算器,要求我们每次运行对应的功能(也就是进行运算时)都要输出日志,以便于知道程序是怎么运 ...

  5. Spring中AOP的理解

    1.AOP的概念 AOP(AspectOriented Programming,面向切面编程)指的是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下个程序动态统一添加功能的一种技术.AOP ...

  6. Spring里面AOP的和IOC的理解

    1.Spring里面AOP的理解:https://www.cnblogs.com/hongwz/p/5764917.html例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心 ...

  7. Spring AOP深入理解之拦截器调用

    Spring AOP深入理解之拦截器调用 Spring AOP代理对象生成回想 上一篇博客中:深入理解Spring AOP之二代理对象生成介绍了Spring代理对象是怎样生成的,当中重点介绍了JDK动 ...

  8. Spring框架学习(9)AOP技术理解与使用

    内容源自:AOP技术理解与使用 一.什么是AOP? aop技术是面向切面编程思想,作为OOP(面向对象编程)的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想. AOP底层也是 ...

  9. 对于Spring中AOP,DI,IoC概念的理解

    IOC IoC(inversion of Control),控制反转.就好像敏捷开发和SCRUM一样,不是什么技术,而是一种方法论,一种工程化的思想.使用IoC的思想意味着你将设计好的对象交给容器控制 ...

随机推荐

  1. 【转载】C#进阶系列——动态Lamada(二:优化)

    前言:前几天写了一篇动态Lamada的文章C#进阶系列——动态Lamada,受园友xiao99的启发,今天打算来重新优化下这个动态Lamada的工具类.在此做个笔记,以免以后忘了. 一.原理分析 上篇 ...

  2. 转载:【原译】Erlang列表处理(Efficiency Guide)

    转自:http://www.cnblogs.com/futuredo/archive/2012/10/22/2734186.html List handling 1  Creating a list ...

  3. 在Terminal中的光标的使用技巧

    如何简单操作? 在 Terminal(终端) 中,有许多操作技巧,这里就介绍几个简单的. 光标 up(方向键上) 可以调出输入历史执行记录,快速执行命令 down(方向键下) 配合 up 选择历史执行 ...

  4. poj 3414 Pots(广搜BFS+路径输出)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:id=3414">http://poj.org/probl ...

  5. Unity-Animator(Mecanim)深入系列总索引

    花了不少时间完成了这篇Unity Animator学习系列文章,其中大多数内容都来自个人实践,包括API部分很多都是亲测,期望和网上的诸多教程达到互补. 相关参考文档 Unity Animator官方 ...

  6. UGUI之Canvas和EventSystem

    先介绍一下UGUI必不可缺的两个组件:Canvas和EventSystem 事实上在场景中第一次创建UGUI控件的时候,这两个物体都会自动添加到场景中,当然,必不可缺的不是这两个物体,而是他们身上挂载 ...

  7. MFC中编辑框Edit Control添加“变量”后

  8. sublime text 2 破解

    本文是介绍sublime text 2.0.2 build 2221 64位 的破解 在你使用sublime时可能经常出现下图: 这是在提醒你注册 在工具栏上点击help->Enter Lice ...

  9. usb摄像头的检测

    下面写一下过程: 如果你能在http://www.ideasonboard.org/uvc/找到你的摄像头的ID,即UVC支持的,那么就可以在linux下使用了.至于从哪个版本开始内核支持UVC,官方 ...

  10. 【RF库Collections测试】Dictionaries Should Be Equal

    Name:Dictionaries Should Be EqualSource:Collections <test library>Arguments:[ dict1 | dict2 | ...