什么是AOP:

Aop技术是Spring核心特性之中的一个,定义一个切面。切面上包括一些附加的业务逻辑代码。在程序运行的过程中找到一个切点,把切面放置在此处,程序运行到此处时候会运行切面上的代码。这就是AOP.。

AOP的实现机制是什么:

Aop是基于动态代理模式实现的,被代理类实现过接口,能够用反射包里的InvocationHandler和Proxy实现。被代理类没有实现过接口。能够用cglib生成二进制码获得代理类。

AOP有什么用途:

Aop用处许多,比方在程序中加入事物,加入日志等。

AOP怎样使用:

能够通过注解的方式和xml配置的方式使用Aop,例如以下是配置的Aop.

使用AOP。在UserDao的save方法前后,切入程序:

UserDao

  1. package com.dao;
  2.  
  3. public class UserDao {
  4. public void save(){
  5. System.out.println("in save");
  6. }
  7. }

切面程序,在save方法运行前后要运行的程序:

  1. package com.aop;
  2.  
  3. import org.aspectj.lang.ProceedingJoinPoint;
  4.  
  5. public class ServiceAop {
  6. public void before(){
  7. System.out.println("in before");
  8. }
  9. public void after(){
  10. System.out.println("in after");
  11. }
  12. public void around(ProceedingJoinPoint pjp) throws Throwable{
  13. System.out.println("around in before");
  14. pjp.proceed();
  15. System.out.println("around in after");
  16. }
  17. }

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/aop
  9. http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
  10.  
  11. <bean id="userDao" class="com.dao.UserDao"></bean>
  12. <bean id="serviceAop" class="com.aop.ServiceAop"></bean>
  13. <aop:config>
  14. <aop:pointcut expression="execution(* com.dao.*.*(..))" id="cutId"/>
  15. <aop:aspect ref="serviceAop">
  16. <aop:before method="before" pointcut-ref="cutId"/>
  17. <aop:after method="after" pointcut-ref="cutId"/>
  18. <aop:around method="around" pointcut-ref="cutId"/>
  19. </aop:aspect>
  20. </aop:config>
  21. </beans>

測试类:

  1. package com.dao;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class Test {
  7.  
  8. public static void main(String[] args) {
  9. ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
  10. UserDao ud=(UserDao) ac.getBean("userDao");
  11. ud.save();
  12. }
  13.  
  14. }

Spring Aop基础总结的更多相关文章

  1. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  2. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

  3. CgLib动态代理学习【Spring AOP基础之一】

    如果不了解JDK中proxy动态代理机制的可以先查看上篇文章的内容:Java动态代理学习[Spring AOP基础之一] 由于Java动态代理Proxy.newProxyInstance()的时候会发 ...

  4. 【AOP】Spring AOP基础 + 实践 完整记录

    Spring AOP的基础概念 ============================================================= AOP(Aspect-Oriented Pr ...

  5. Spring AOP基础知识

    Spring AOP使用动态代理技术在运行期织入增强的代码,两种代理机制包括:一是基于JDK的动态代理,另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的 ...

  6. Java动态代理学习【Spring AOP基础之一】

    Spring AOP使用的其中一个底层技术就是Java的动态代理技术.Java的动态代理技术主要围绕两个类进行的 java.lang.reflect.InvocationHandler java.la ...

  7. Spring AOP基础概念及自定义注解式AOP初体验

    对AOP的理解开始是抽象的,看到切点的匹配方式其实与正则表达式性质大致一样就基本了解AOP是基本是个什么作用了.只是整个概念更抽象,需要具化理解.下图列表是AOP相关概念解释,可能也比较抽象^_^ 比 ...

  8. Spring AOP基础

    目录 AOP基本术语 Advice-通知 Before After After-returning After-throwing Around Pointcut-切点 Aspect-切面 Join P ...

  9. Spring AOP小记

    一.概述 在通常的开发过程中,我们调用的顺序通常是controller->service-dao,其中,service中包含着太多的业务逻辑,并且还要不断调用dao来实现自身的业务逻辑,经常会导 ...

随机推荐

  1. 使用神经网络识别手写数字Using neural nets to recognize handwritten digits

    The human visual system is one of the wonders of the world. Consider the following sequence of handw ...

  2. jquery ajax 中不能给变量赋值的原因及解决办法

    我们在用JQuery的Ajax从后台提取数据后想把它赋值给全局变量,但是却怎么都赋不进,为什么呢? 原因其实很简单,我们用的Ajax是异步操作,也就是说在你赋值的时候数据还没提取出来,你当然赋不进去, ...

  3. iOS: 常用的宏

    Github地址:https://github.com/XFZLDXF/Macro/blob/master/MacroDefinition.h // // MacroDefinition.h // M ...

  4. Python爬虫之一 PySpider 抓取淘宝MM的个人信息和图片

    ySpider 是一个非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇通过做一个PySpider 项目,来理解 Py ...

  5. cglib Demo

    转载自:http://huihai.iteye.com/blog/858524 http://www.cnblogs.com/shijiaqi1066/p/3429691.html

  6. 转:关于android webview实践的文章集合

    http://blog.csdn.net/jiangqq781931404/article/category/2681765

  7. 扩展JButton实现自己的图片按钮

    实现效果: 代码: import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.In ...

  8. MySQL外键及级联删除 && 表的存储引擎与创建索引 && 删除数据库和表

    Messages表: mysql>create table Messages( ->message_id int auto_increment primary key, ->user ...

  9. ARM 指令集版本和ARM 版本z

    a9是cortex-a9的简称,属于v7指令集,属于目前比较新的了.arm9就是arm9,属于v5指令集,arm9后面的是arm11,属于v6指令集,之前的是arm7,属于v4指令集.虽然他们之间差别 ...

  10. iOS 证书管理.p12文件不能导出

    iOS证书不能导出p12文件: 首先要确认证书是从你这个电脑上制作生成的! 钥匙串-->我的证书--->右键,就可以导出了!