Spring4.x 学习笔记day 02



Spring day 02 学习笔记

AOP的概念以及注解使用开发

AOP主要概念:

Cross Cutting Concern(横切关注点)

是一种独立服务,遍布在系统的处理流程之中(可以理解可以单独抽取出的服务)

Aspect(横切面)

对横切性关注点的模块化(可以简单理解成一个java)

Advice(就简单理解成方法吧)

对横切性关注点的具体实现(Spring 中可以理解为横切面的具体方法)

Pointcut(切入点)

它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用

JoinPoint(加入点)

Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:Aspecj可以支持

Weave(织入)

Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入

Target Object(目标对象)

Advice被应用的对象

Proxy

Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理

Introduction

可以动态的为类添加方法

 

要想用好Spring AOP 首先就要好好理解前面的几个概念,在自己的脑子里有一种如何实现aop的流程。先找到有哪些独立服务把它当成横切关注点抽取出来,然后模块化它关注点使其成为一个java类即关注面,这个java类中具体的实现方法就是Advice,然后确定Advice的切入带你和加入点,应用到目标对象即可。

实现AOP使用注解的方式比较简单和方便,推荐使用。

1.在横切面上加入@Aspect

2.在具体的Adivce(方法)上加入@Before  or  @After

3.在主配置文件中配置实用注解方式的参数

 

可以在Advice方法参数中加入JoinPoint来获相关的参数信息

 

写注解时候可能要用到切入点表达式(比较简单参考文档)

  举例:execution(public voidcom.xuyi.aop.UserManager.addUser(..));

  即execution(返回类型 包名.类名 方法名(参数列表))

  当然其实可以用*代表通配符、参数列表可以使用(..) 即两点表示不定参数

 

开发步骤:(基于注解的AOP实现)

1.Spring 的依赖jar 包导入(别忘记AOP AspectJ )

2.将横切关注点模块化,建立一个java

3.采用注解指定该java类为Aspect

4.采用注解定义Advice(模块化类的方法Pointcut     ;可以合在一起写

5.配置文件中配置启用AspectJAnnotation的支持,并且将目标类和Aspect类配 置到IOC容器中。

6.开发客户端试用

springAOP的支持

 

1、如果目标对象实现了接口,在默认情况下会采用JDK的动态代理实现AOP

2、如果目标对象实现了接口,也可以强制使用CGLIB生成代理实现AOP

3、如果目标对象没有实现接口,那么必须引入CGLIBspring会在JDK的动态代理和CGLIB代理之间切换

 

如何强制使用CGLIB生成代码?

加入CGLIB库,SPRING_HOME/lib/cglib/*.jar

加入如下配置,强制使用CGLIB代理

JDK动态代理和CGLIB代理的区别?

* JDK动态代理对实现了接口的类进行代理

* CGLIB代理可以对类代理,主要对指定的类生成一个子类,因为是继承

  我们的目标最好不要使用final声明

了解即可



Spring中通常配置的是服务类、无状态类。

 

其实要使用AOP是很简单的,对于AOP我们更应该掌握它的思想。


实际开发中我们自己去编写AOP的机会是很少的,通常我们都是在Spring中配置好声明式事务之后,我们就不会再管事务的事情了。

 

HibernateopenSessiongetCurrentSesion的区别:在需要使用事务的时候尽量使用使用后一个,需要配置Thred.


 



你可能感兴趣的:(Spring4.x)