码迷,mamicode.com
首页 > 编程语言 > 详细

Spring框架学习之第9节

时间:2016-08-20 14:26:00      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

  •  aop编程

aop(aspect oriented programming)面向切面(方面)编程,是所有对象或者是一类对象编程,核心是(在不增加代码的基础上,还增加新功能)

 

汇编(伪机器指令 mov jump)面向机器

C语言(面向过程)->系统软件(操作系统,数据库,语言本身,杀毒软件,防火墙,驱动)大部分都是用C语言软件写

 

语句1;

语句2;

C++

 

Java语言(面向对象->类-对象)

class Dog{

    属性;->变量

    行为->函数

}

 

 

面向切面 spring(->aop)面向很多对象编程

 

aop特别提醒:aop编程,实际上在开发框架本身用的很多,在实际项目开发中用的并不是很多,但是将来会越来越多,这是个编程的趋势

 

技术分享

  •  aop原理+案例

 

aop原理+案例(aop中有很多概念,先不说,当我们讲完案例后,再看概念)

 

需求:在调用Test1Service sayHello()前完成日志记录功能,

在调用Test2Service sayHello()前也要完成日志

 

编程说明

beans.xml

  1. 被代理的对象
  2. 前置通知
  3. 代理对象

<!!!细节!!!>

 

步骤如下:

1、 定义接口

2、 编写对象(被代理对象=目标对象)

3、 编写通知(前置通知在目标方法调用前调用)

4、 在我们的beans.xml中配置

4.1、先配置被代理对象=目标对象

4.2、配置通知

4.3、配置代理对象是proxyFactoryBean对象实例

4.3.1、<!—代理接口集--à

4.3.2、织入通知

4.3.3、配置被代理对象

 

真正的织入发生时动态的,真正的织入发生应该是一个过程,当你在调用被代理对象方法的时候织入发生。

 

切入了定义了通知应该在哪些连接点上,定义了前置通知可以在sayHello之前被调用,连接点就会变成切入点,就好像连接点是一个静态的概念而切入点是一个动态的概念。

 

后面还有后置通知,环绕通知,异常通知,引入通知

 

上机练习:你把老师写的代码看看写一遍

 

需求:

在调用完Test1Service的sayHello()后,完成资源的关闭

 

提问?说spring的aop中,当你通过代理对象去实现aop的时候,获取的ProxyFactoryBean是什么类型?

答:返回的是一个代理对象,如果目标对象实现了接口,则spring使用jdk的动态代理技术完成,如果目标对象没有实现接口,则spring使用CGLIB动态代理技术完成.

 

 

提一个问题

Class A{

private String name;

public void setName(String name){

       system.out.println(“name” + name);

}

}

 

beans.xml

<bean id=”a” class=”A”>

    <property name=”name” value=”顺平” />

</bean>

 

理解:

A a = new A();

a.setName(“顺平”);

 

需求:

在进入sayhello()函数以后

sayHello(){

连接点

bi.xx

}

 

 

需求:

织入的通知会对所有的函数都有影响,通过引入通知来选择织入

 

我们只希望在调用sayHello()来进行前置通知或后置通知的处理,我不希望我们的sayBye参与

 

通过引入通知我们可以自定义切入点。

 

切入点允许使用正则表达式过滤

 

使用spring的静态切入点(续)

  正则表达式切入点

  RegexpMethodPointcut

 

符号

描述

示例

匹配

不匹配

.

匹配任何单个字符

setFoo.

setFooB

setFoo setFooBar

+

匹配前一个字符一次或多次

setFoo.+

setFooBar

setFooB

setFoo

*

匹配前一个字符0次或多次

setFoo.*

setFoo

setFooB, setFooBar

 

\

匹配任何正则表达式符号

\.setFoo.

bar.setFoo

setFoo

 

 技术分享

技术分享

技术分享

技术分享 技术分享技术分享

Spring框架学习之第9节

标签:

原文地址:http://www.cnblogs.com/litao0505/p/5790278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!