网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.线标记语言(WML)之Script函数库.
.使用 AppFuse 快速构建 J2EE 应用.
.j2ee技术简单介绍.
.使用Filter记录日志、来访IP、UR.
.eclipse3.0开发j2me环境搭建.
.JavaMail快速入门-6.
.什么是EnterpriseJavaBeans组件?.
.J2ME最佳实践之屏幕导航.
.JSP标准标签库(二).
.配置好Eclipse+WTK2.2环境后.实现.
.RMS概念解析与使用指南.
.J2EE Web的新变革:Apusic Opera.
.基于weblogic的ejb学习笔记二.
.Hibernate+Struts的J2EE应用开发.
.Spring 系列:当 Hibernate 遇上.
.选择:J2EE还是.NET,这是一个问.
.EnterpriseJavaBeans导论二.
.servlet的相关内部处理机制.
.J2EE的13种核心技术(二).
.24分钟学会用JMock进行单元测试.

JBOSSAOP学习笔记-AOP的优点

发表日期:2007-12-23


学习笔记-AOP的优点


面对方法编程并不是要取代面对对象编程,而是要提高它。AOP程序员一般来说都是90%使用OOP来解决问题
而10%是用AOP来解决OOP不能解决的问题。

横切关注点(cross-cutting Concerns)
很多时候你发现你的类并不能十分清晰和明白的表到你所想表达的功能意义,因为你真正的代码大多被其它代码所包围了。如果你想很好的扩展或集成你所想表达的功能意义,你最好就用方面的思想来考虑它了。

开发中的分层(layering Based on Deployment)
AOP另外一个很有用的地方就是可以用来为你的应用程序分层。很多时候你希望的一些特殊应用或类是可以很好的配置的,但同时也希望这些东西是不臃肿和可以扩展的。AOP提供了很好的途径来分层这些复杂的东西。JBOSS AOP提供了XML配置的机制来配置每个方面的开发。最好的例子就是缓存服务,它提供了不同的锁机制。这些缓存锁机制可以很好的织入你的内,而不影响你的类的代码,这样你的类就是很好的扩展性了。

透明性(transparency)
很多时候你都想把你的程序的焦点集中在商务应用和应用逻辑上,而不是关注于中间件的开发。AOP允许你透明的应用中间件而不再使你的代码收到污染。一个很好的例子就是JBOSS AOP中的用户认证上面。

异常处理
处理异常是AOP提供给我们另外一个很有用的东西。例如,SQLException异常包含了SQL语句的 异常信息或者数据库的死锁等信息,但这些信息却使用不同错误代码和信息。AOP可以让你拦截SQL语句信息,并分类处理数据库死锁信息。

 public class InvalidSQlException extends SQLException
{
   InvalidSQLException(SQLException ex)
   {
       super(ex.getMessage(), ex.getSQLState(), ex.getErrorCode());
   }
}


使用的方面
public class SQLExceptionASPect
{
   public Object handleSqlException(Invocation invocation) throws Throwable
   {
      try
      {
         return invocation.invokeNext();
      }
      catch (SQLException ex)
      {
         if (isVendorInvalidSqlErrorCode(ex.getErrorCode())) throw new InvalidSQLException(ex);
         if (isVendorDeadlockErrorCode(ex.getErrorCode()) throw new SQLDeadlockException(ex);
         ... and so on ...
      }
   }
   ... impl of isVendor methods ...
}

使用的配置
<aspect class="SQLExceptionAspect" scope="PER_VM"/>
<bind pointcut="call(* $instanceof{Java.sql.Statement}->execute*(..))">
   <advice name="handleSqlException" aspect="SQLExceptionAspect"/>
</bind>
进入讨论组讨论。

(出处:)


上一篇:基于weblogic的ejb学习笔记二 人气:606
下一篇:JBOSSAOP学习笔记-标签使用(J2SE5.0)中的元数据 人气:588
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐