AOP with spring

本文介绍了Spring 2.0中AOP的概念与应用,包括Aspect、Jointpoint、Advice和Pointcut等基本要素,并通过示例展示了如何使用schema-based风格定义Aspect、Pointcut及Advice。

        近日由于要对业务逻辑层的返回值进行一下处理,所以看看了spring 2.0中关于AOP开发部分的内容,在这里做个笔记,以免过几天又给忘了。如果能对您有帮助,就帮忙顶一下。

一、AOP的基本概念

  1. Aspect(切面),一个横切多个对象的关注点的模块;
  2. Joint point(连接点),程序执行中的一个点,比如执行一个方法或者是处理一个异常;
  3. Advice(建议??),一个aspect在一个特殊的Join point的行为或动作。包括:before, after returning, after throwing, after(finally), around五种;
  4. Pointcut(切入点),匹配连接点一个断言。advice与Pointcut表达式相关联,并且在任何join point与pointcut相匹配时执行。

二、AOP with spring
          spring 2.0引入了一个简单并且功能更加强大的方法来自定义aspect。自定义aspect时有两种风格:schema-based和@aspectJ。

  1. @aspectJ风格指在一个正常的java类上添加java 5的注解来声明一个aspect,它是由AspectJ项目提出的,详细信息请查看http://www.eclipse.org/aspectj,这里不讨论这种方式。
  2. shcema-based风格是指在spring bean的配置文件中通过新的"aop"命名空间标记定义一个aspect。
aop命名空间定义
  1. <beans xmlns="http://www.springframework.org/schema/beans"      
  2.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
  3.        xmlns:aop="http://www.springframework.org/schema/aop"      
  4.        xsi:schemaLocation="       
  5.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd       
  6.         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  

三、schema-based

定义aspect

 

  1. <aop:config>  
  2.   <aop:aspect id="myAspect" ref="aBean">  
  3.   ...   
  4.    aop:aspect>  
  5. >  
  6. <bean id="aBean" class="...">  
  7. ...   
  8. >  

 

 

定义pointcut
  1. <aop:config>  
  2.    <aop:pointcut id="businessService"  
  3. expression="execution(* com.xyz.myapp.service.*.*(..))"/>  
  4. >  

 

定义Advice

 

  1. <aop:aspect id="beforeExample" ref="aBean">  
  2.    <aop:before pointcut-ref="dataAccessOperation" method="doAccessCheck"/>  
  3.   <aop:after-returning pointcut-ref="dataAccessOperation"returning="retVal" method="doAccessCheck"/>  
  4.   <aop:after-throwing pointcut-ref="dataAccessOperation" throwing="dataAccessEx" method="doRecoveryActions"/>  
  5.   <aop:after pointcut-ref="dataAccessOperation" method="doReleaseLock"/>  
  6.   <aop:around pointcut-ref="businessService" method="doBasicProfiling"/>  
  7. ...   
  8. >  

 

四、例子

配置
  1. <aop:config>  
  2.     <aop:pointcut id="pointcut_lazyProcess"    
  3.         expression="this(com.xucons.arch.BusinessLogic) and execution(public !void *(..))"/>  
  4.   
  5.     <aop:aspect id="aspect_lazyProcess" ref="lazyProcess">  
  6.         <aop:around  
  7.             pointcut-ref="pointcut_lazyProcess"  
  8.             method="processUninitializedObject"/>          
  9.     aop:aspect>  
  10. >  
  11.   
  12. <bean id="lazyProcess" class="com.qusiness.arch.rt.LazyProcess" />  

      

实现
  1. public class LazyProcess {   
  2.     static Logger logger = Logger.getLogger(LazyProcess.class.getName());   
  3.        
  4.     public Object processninitializedObject(ProceedingJoinPoint pjp) throws Throwable {   
  5.         Object retVal = pjp.proceed();           if (retVal != null) {   
  6.             logger.info(">>processing uninitialized business object...");   
  7.             if (retVal instanceof Date ) {   
  8.                 retVal = new Date(((Date) retVal).getTime());   
  9.             } else {   
  10.                 process(retVal);   
  11.             }   
  12.         }          
  13.         return retVal;   
  14.     }   
  15. }  

 

  
潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值