仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 814|回复: 10
打印 上一主题 下一主题

[学习教程] 了解下JAVA的用AspectJ机关方面库

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
1.方面库
人人都晓得,各类AOP工具的中心就是切进点(pointcut)和关照(advice)的声明。切进点形貌了主程序实行与方面实行相遇的中央,也就是被横切的地位;关照则形貌了在程序实行过程当中碰到婚配的切进点时应该接纳甚么举动。假定已开辟了一个方面,而且感到它合用于其他项目,那末能够泛化这个方面,并把它断绝到本人自力的项目中,构成一个库,即方面库(AspectLibrary)。方面库供应了某个功效的外部实行逻辑和基本举措措施,经由过程切进点的实例化将方面库与某个特定项目毗连起来。比方供应使用程序功能监督的方面库,完成了一切性能监督相干的办法和关照,某使用程序利用该库的时分,只必要把库的切进点定义为使用特定的毗连点便可,而无需体贴功能监督功效的详细完成。这就是方面库的基础观点。
方面库是AOP工具具有扩大性的表现,今朝经常使用的AOP工具,如JBossAOP、SpringAOP、AspectJ等,都有对方面库的撑持,但因为它们完成AOP的办法分歧,方面库的界说和利用办法也不不异。在JBossAOP和SpringAOP中,关照的完成都是经由过程一般Java语法界说,切进点到关照的绑定是经由过程显式的XML文档大概正文完成的。以是将方面库使用于使用程序就能够很简单地经由过程在XML中或经由过程正文界说新的关照绑定而完成。而且JBoss和Spring体系自己已供应了很好的方面库供用户利用。
AspectJ是Java言语语法和语义的扩大,它供应了本人的一套处置方面的关头字,这些都决意了用AspectJ机关方面库的办法具有必定的特别性。以是AspectJ机关的方面库一向不象JBossAOP和SpringAOP那样广泛,AspectJ也并没有供应任何方面库。使人欣喜的是,AspectJ从AspectJ5版本入手下手供应对正文的撑持,它的编纂工具AJDT中渐渐到场了对方面库的撑持功效,从而使得利用AspectJ机关方面库变得愈来愈简单。本文就来先容怎样用AspectJ机关方面库。
2.AspectJ对方面库的手艺撑持
方面库的完成在于切进点的实例化体例。AspectJ对切进点界说办法的撑持导致了两种完整分歧的方面库完成办法--利用笼统方面(abstractaspect)的办法和利用正文的办法。本章将具体先容这两种体例。
AspectJ是Java言语的扩大。方面在AspectJ言语顶用aspect关头字标示,它类似于Java类,能够界说成笼统的,也存在承继干系。切进点在AspectJ言语顶用关键字pointcut标示,它有一套完全的语法来形貌切进点,也能够界说成笼统的,即没有实践界说的切进点。笼统pointcut只能界说在笼统方面中。如清单1所示,笼统方面A内里界说了一个笼统pointcut名叫publicCall。笼统方面好像笼统类一样,能够被承继,承继笼统方面的方面必需重载笼统pointcut,即付与笼统pointcut实践的界说。如清单2所示,方面B承继了笼统方面A,重载了名叫publicCall的pointcut,给它一个详细的界说。
清单1笼统方面
public abstract aspect A {
   abstract pointcut publicCall(int i);
 }
清单2承继笼统方面的子方面
public aspect B extends A {
   pointcut publicCall(int i): call(public Foo.m(int)) && args(i);
}
AspectJ对承继和笼统的撑持恰是我们机关方面库的基本。笼统方面包括笼统的切进点和详细的关照,正切合方面库的特性,可使用笼统方面来机关方面库文件。承继笼统方面的子方面必需详细化切进点,能够把它看成方面库在详细应用程序中的实行。为了加深了解,我们将在接上去的章节中利用笼统方面手艺制作一个复杂的纪录踪影的方面库,并扩大它以使用到详细项目中。
从AspectJ5入手下手撑持的正文是别的一种机关方面库的手艺基本。Java5引进了正文这类范例,它以正文的情势来表达程序中各成员的元数据信息,接纳标记@标示。Java5中能够被正文润色的Java程序成员有良多,AspectJ5能撑持的正文包括润色方面、办法、属性、机关函数和关照,润色办法和关照的参数的正文也能撑持,可是不撑持pointcut和declare语句上的正文。为了撑持正文范例,AspectJ5扩大了pointcut语法,能够婚配存在大概不存在的正文范例。比方清单3中的名叫onewayMethod的pointcut能够婚配一切被正文@Oneway润色的办法挪用。
清单3含有正文的pointcut
public aspect C {
pointcut onewayMethod: call(@Oneway * *(..));
}
AspectJ5对正文的撑持简化了实行库的办法,我们能够很简单地想到,在把方面库实行到使用程序时,能够使用正文标明详细的切进点的地位。在机关方面库文件时,只必要界说好与正文相干的切进点,并划定该切进点上的详细的关照内容就能够了。我们一样会鄙人面的章节中先容利用正文制造复杂的方面库的过程。
<p>
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
海妖 该用户已被删除
11#
发表于 2015-3-23 08:12:55 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
只想知道 该用户已被删除
10#
发表于 2015-3-17 00:09:10 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
爱飞 该用户已被删除
9#
发表于 2015-3-9 16:57:48 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
活着的死人 该用户已被删除
8#
发表于 2015-2-28 00:47:22 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
乐观 该用户已被删除
7#
发表于 2015-2-9 22:22:54 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
谁可相欹 该用户已被删除
6#
发表于 2015-2-7 03:40:47 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-3 19:43:50 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
山那边是海 该用户已被删除
地板
发表于 2015-1-25 19:56:17 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
若天明 该用户已被删除
板凳
发表于 2015-1-24 13:30:37 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 16:09:53 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 11:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表