- 4
- 0
- 约9.09千字
- 约 17页
- 2017-01-30 发布于重庆
- 举报
第3章 Spring的AOP模块
第3章 Spring的AOP模块
本章学习目的和要求
本章重点和难点
AOP是Spring框架的另一个重要特征。AOP(Aspect Oriented Programming,面向切面编程)把一个业务流程分成几部分,例如权限检查、业务处理、日志记录,每个部分单独处理,然后把它们组装成完整的业务流程。每个部分被称为切面(Aspect)或者关注点。
3.1 实例:使用拦截器拦截方法(在struts-2.3.8中复制commons-logging-1.1.1、aopalliance-1.0.jar)
AOP有一些重要的概念,包括切面(Aspect)、连接点(Joinpoint)、通知(Advice)、切入点(Pointcut)、引用(Introduction)等。这些概念并不是Spring定义的。对于刚刚接触AOP的开发者来说,这些概念非常抽象,往往很难理解。
抛开这些抽象的概念,先来看一个AOP例子。前面的章节中曾介绍了一个AOP的例子。下面看一下稍微复杂的例子。本例中,AOP的规则要稍微复杂一些。
3.1.1 Service接口
Spring推荐使用接口编程。该接口定义了两个方法。一会儿将使用拦截器拦截其中的withAop()方法,而另一个方法withoutAop()将不会被拦截。
IAopService.java
package com.helloweenvsfei.spring.aop;
public interface IAopService
{ //Service接口,定义两个方法
public void withAop() throws Exception; //将会被拦截
public void withoutAop() throws Exception; //不会被拦截
}
3.1.2 Service实现代码
IAopService实现类中定义了一个name属性,以及对应的getter、setter方法。实现类代码为:
AopServiceImpl.java
package com.helloweenvsfei.spring.aop;
import javax.security.auth.login.AccountException;
public class AopServiceImpl implements IAopService
{
//Service实现
private String name; //name属性
public void withAop() throws Exception
{
//withAop方法实现
System.out.println(有AOP的函数运行。name: +name);
if (name.trim().length()==0) // 如果name为空
throw new AccountException(name属性不能为空); // 则抛出异常
}
public void withoutAop() throws Exception
{
// withoutAop方法实现
System.out.println(没有AOP的函数运行。);
}
public String getName()
{
//getter方法
return name;
}
public void setName(String name)
{
//setter方法
=name;
}
}
3.1.3 方法前拦截器检查name是否为null
下面是方法前拦截器,实现自MethodBeforeAdvice接口。方法前拦截器在执行指定方法前被调用,参数分别为被调用的方法、执行时被传入的参数、被拦截的Bean。代码为:
MethodBeforeInterceptor.java
package com.helloweenvsfei.spring.aop;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class MethodBeforeInterceptor implements MethodBeforeAdvice
{
//方法前拦截器
// 调用对象的方法前将执行该方法。参数分别为被调用的方法、被调用调用方法的参数、对象
public void before(Method method, Object[] args, Object instance) throws Throwable
{
System.out.println(即将要执行方法: + method.ge
您可能关注的文档
- 海为PLC扩展模块做远程IO使用详解.doc
- 常用PAM模块简介.doc
- 2014杭州继续教育《医学伦理学》100分试卷.docx
- 单片机原理及应用第六讲_MSP430F5XX6XX的时钟模块(UCS)实验报告.doc
- 管理系统中计算机应用_2009-2013_真题_答案_.doc
- 商业伦理学1-3.doc
- 浙江省 高校师资培训 练习系统 精华版 之 教师伦理学.doc
- HC-SR501人体红外感应模块说明书.doc
- 浙江高校教师岗前培训20套之《教师伦理学》错题、相似题集(最新整理、无重复).doc
- 教本:函授《教师伦理学》大纲和作业.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)