在开发smart memcache的过程中 ,开发了一个简易的 ruby aop 。
支持 before,after,rescue 的拦截,支持重复,任意组合的拦截声明 。
在后续的版本支持 arround interceptor声明。
基本的使用代码如下:
after 拦截使用:
@ruby_aop = AOP::RubyAop.new
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:after) { |aop_info,*args| # your after block here }
说明:
aop_info 为aop的元数据,类型为hash。 主要元数据:
@aop_inf[:intercepted_class] 被拦截的类名(quanlified class name)
@aop_inf[:intercepted_method] 被拦截的方法名(symbol)
@aop_inf[:intercepted_method_is_class_method] 是否类方法) (true|false)
*args 为被拦截的方法调用的参数。
before 拦截使用:
@ruby_aop = AOP::RubyAop.new
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:before) { |aop_info,*args| # your after block here }
:interceptor_type=>:before 由after改为 before
rescue同样的 : :interceptor_type=>:rescue
rescue的话,aopinfo里面可以通过 :error获取到异常信息。
后续版本会做一个arround interceptor的支持 ,大概使用例子如下:
arround_statement_str=<<END
#hahahah before statement here
AOP_ORIGINAL_METHOD_CALL
##bla bla after statement here
END
@ruby_aop = AOP::RubyAop.new
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:arround,:arround_body=>arround_statement_str)
其中arround_statement_str里面的原来方法的调用必须使用一个特殊的标志串 :
AOP_ORIGINAL_METHOD_CALL
分享到:
- 2007-12-14 11:13
- 浏览 4192
- 评论(0)
- 论坛回复 / 浏览 (0 / 2372)
- 查看更多
相关推荐
该项目为全栈Java开发,采用Nutz框架实现Mvc/Ioc/Aop/Dao/Json一体化设计,源码包含2307个文件,涵盖1742个Java源文件、208个man文档、143个png图片...Nutz框架旨在为所有Java开发者提供一个高效、易用的全栈解决方案。
JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有 Java 语言所有优势的同时再拥有 ruby、python...
MonoRail 是 Ruby onRail 的 .NET 实现,这是一个 MVC Web 框架。它与传统 WebForm 在控制上的不同在于 WebForm 采用页控制器模式,而 MVC 采用前端控制器模式。在界面表达方式上 MonoRail 采用模板引擎输出,模板...
Spring是企业级Java应用的事实标准,它是一个全面的开发框架,支持依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问、Web应用以及更多的功能。Spring Boot使得创建独立的、生产级别的基于Spring的应用变得...
接下来是EasyJWeb,它是一个简易的Java Web框架,旨在帮助开发者快速构建Web应用。它通过简单的配置和约定来减少开发中的繁琐工作。 还有Tapestry框架,它属于一种比较早期的框架,采用组件驱动的方式来构建Web页面...
本资源“Doraemon,深入了解一些常见的后端框架.zip”似乎是一个开源项目,旨在帮助开发者更深入地理解一些常用的后端框架。让我们详细探讨一下这些后端框架。 1. **Spring Framework**: Spring是最广泛使用的Java...
通常,这样的项目会包含README文件,解释如何使用、安装和定制这个AOP框架,以及示例代码来演示其功能。 在Objective-C中实现AOP,通常涉及以下技术: 1. **分类(Category)**:Objective-C允许通过类别为已有的...
Jfinal 是一个MVC(Model-View-Controller)架构的实现,它借鉴了Ruby on Rails的许多设计理念,使得Java开发者也能体验到快速开发的乐趣。 在Jfina框架中,主要包含以下几个核心概念: 1. **Controller**:控制器...
- **Spring**:Java领域的主流框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,广泛应用于企业级应用。 - **Django**:Python中的全栈框架,以其快速开发和内置的安全特性著名,适合...
9. **Ruby on Rails**:Ruby语言的Web开发框架,强调DRY(Don't Repeat Yourself)原则和Convention Over Configuration。阅读Rails源码,可以了解MVC架构和ActiveRecord的实现。 10. **Flask**:Python的小型轻量...
一个典型的JSPWeb框架项目包括以下组成部分: - **src/main/java**:存放Java源代码,包括控制器、模型和服务类。 - **src/main/resources**:存储配置文件和其他资源,如数据库连接字符串、国际化消息文件等。 - *...
Seasar2是一个源自日本的开源框架,其设计目标是为Java开发者提供轻量级的容器服务,以提高开发效率和代码质量。与许多其他轻量级容器不同,Seasar2强调了无需编写配置文件的特性,它采用了Convention over ...
5. **Ruby on Rails**:Rails是Ruby语言的明星框架,它倡导“Convention over Configuration”原则,使开发过程更加高效。Rails的ActiveRecord提供了强大的ORM能力,而Action Cable则支持实时Web应用。 6. **Flask*...
**Ruby on Rails**(简称Rails)是一个开发效率高、约定优于配置的Web应用框架,提供了ORM(对象关系映射)、MVC(模型-视图-控制器)架构等特性。Rails的特点包括: - **约定优于配置**:Rails通过一系列预定义的...
- **Ruby on Rails框架(Ruby)**: - **核心组件**:基于Ruby语言的Web服务器。 - **特性**:遵循“约定优于配置”的原则,提供ORM支持等。 - **使用场景**:适用于Web应用、企业级应用等。 #### 四、后端开发...
JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、...
- **Ruby on Rails**:这是一个基于Ruby语言的Web开发框架,完全遵循MVC架构,以其“约定优于配置”的理念和强大的生产力著称。 **学习MVC的步骤** 1. **理解基础概念**:深入学习模型、视图和控制器的职责及其相互...
JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、...
2. **Django**:Django是Python语言中的一个全功能Web框架,它遵循MVC模式,并且内置了ORM(对象关系映射)和模板引擎。Django强调快速开发,安全性和可维护性,常用于构建复杂和高性能的Web应用。 3. **Ruby on ...
3. **Ruby on Rails**:基于Ruby语言的框架,推崇“约定优于配置”的开发原则。 4. **Django**:Python语言的Web框架,强调快速开发和DRY(Don't Repeat Yourself)原则。 **在实际开发中,MVC框架的使用步骤通常...