上篇博客写到了Spring AOP,不管是前置增强,后置增强,引入增强都是对方法的增强,但是是否考虑过对类进行增强呢?!伟大的spring做到了,只是换了一种说法:Introduction(引入)
首先我们来说一下引入增强的目的:动态的让被增强的类实现一个接口;下面就写一下代码吧:
定义了一个新接口 Apology:
/**
* 道歉接口
* @author 陈丽娜
*...
分类:
编程语言 时间:
2015-05-30 22:46:47
阅读次数:
203
与 AspectJ 相同的是,Spring AOP 同样需要对目标类进行增强,也就是生成新的 AOP 代理类;与 AspectJ 不同的是,Spring AOP
无需使用任何特殊命令对 Java 源代码进行编译,它采用运行时动态地、在内存中临时生成“代理类”的方式来生成 AOP 代理。
Spring 允许使用 AspectJ Annotation 用于定义方面(Aspect)、切入点...
分类:
编程语言 时间:
2015-05-30 22:44:51
阅读次数:
249
CGLIB(Code Generation Library),简单来说,就是一个代码生成类库。它可以在运行时候动态是生成某个类的子类。
此处使用前面定义的 Chinese 类,现在改为直接使用 CGLIB 来生成代理,这个代理类同样可以实现 Spring AOP 代理所达到的效果。
下面先为 CGLIB 提供一个拦截器实现类:
public class AroundAdvice imple...
分类:
编程语言 时间:
2015-05-30 22:42:18
阅读次数:
212
AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的
交叉关注点的问题,在 JavaEE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP
实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理主要分为静态代理和动态代理两大类,静态代理以 AspectJ 为代表;而动态代理则以
Spring AOP 为代表。本文会从Aspe...
分类:
编程语言 时间:
2015-05-29 13:59:27
阅读次数:
1754
1.interface org.springframework.aop.SpringProxy is not visible from class loader
解决方法:引入spring aop的包
2.运行平台的MainApplication报了这样的错误:签名信息不匹配
Caused by: java.lang.IllegalArgumentException: protocol =...
分类:
其他好文 时间:
2015-05-28 10:57:49
阅读次数:
196
一.搭建spring mvc 的hello world
1.添加jar包:
commons-logging-1.1.1.jar
spring-aop-4.1.6.RELEASE.jar
spring-beans-4.1.6.RELEASE.jar
spring-context-4.1.6.RELEASE.jar
spring-core-4.1.6.RELEASE.jar...
分类:
编程语言 时间:
2015-05-25 10:03:11
阅读次数:
129
前面写了一个前置增强,后置增强的小demo,前置增强即在方法调用前对方法增强;后置增强即在方法调用后对方法增强。环绕增强允许在目标类方法调用前后织入横切逻辑,它综合了前置、后置增强两者的功能。
环绕增强的代码和前面前置增强代码有一个不同处,所实现的接口包路径改变了。前置增强、后置增强实现的接口在org.springframework.aop 路径下,而环绕增强类需要实现 org.aopalliance.intercept.MethodInterceptor
接口。这个接口不是 Spring 提供的,它是 A...
分类:
编程语言 时间:
2015-05-23 12:59:53
阅读次数:
206
AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也...
分类:
编程语言 时间:
2015-05-22 17:01:39
阅读次数:
142
Waiter.java
package com.paic.zhangqi.spring.aop;
public interface Waiter {
void greetTo(String name);
void serveTo(String name);
}
NaiveWaiter.java
package com.paic.zhangqi.spring.aop;
publi...
分类:
编程语言 时间:
2015-05-22 00:39:29
阅读次数:
182
原文来源:点击进入 此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题。最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。本文是权当本人的自己AO.....
分类:
编程语言 时间:
2015-05-21 12:41:45
阅读次数:
135