选择显示字体大小

spring framework中的面向方面编程


  作为这个介绍spring框架中的面向方面编程(aspect-oriented programming,aop)的系列的第一部分,本文介绍了使您可以使用spring中的面向方面特性进行快速开发的基础知识。 使用跟踪和记录方面(面向方面领域的helloworld)作为例子,本文展示了如何使用spring框架所独有的特性来声明切入点和通知以便应用方面。本系列的第二部分将更深入地介绍如何运用spring中的所有通知类型和切入点来实现更实用的方面和面向方面设计模式。对于aop的更一般性的介绍,请查看onjava站点上graham o'regan的文章,“introduction to aspect-oriented programming”。

  本文的目的不是要介绍构成模块化j2ee系统——即spring框架——的所有重要元素,我们将只把注意力放在spring所提供的aop功能上。由于spring的模块化设计方法,我们可以只使用该框架的aop元素,而无需对构成spring框架的其他模块做太多考虑。

  在aop方面,spring提供了什么?

  “它的目标不是提供最完善的aop实现(虽然spring aop非常强大);而是要提供aop实现与spring ioc的紧密集成,以便帮助解决企业应用中的常见问题。”

  spring framework参考文档

  为了实现这个目标,spring框架目前支持一组aop概念,从切入点到通知。本文将展示如何使用spring框架中所实现的如下aop概念:

  通知(advice):如何将before通知、afterreturning通知和afterthrowing通知声明为bean。

  切入点(pointcut):如何声明静态切入点逻辑以将xml spring bean configuration文件中的所有内容联系在一起。

  advisor:关联切入点定义与通知bean的方式。

  设置场景:一个简单的例子应用程序

  “一般而言,spring并不是预描述的。虽然使用好的实践非常容易,但是它避免强制推行一种特定的方法。”

  spring framework参考文档

  要试用spring框架的aop功能,首先我们要创建一个简单的java应用程序。ibusinesslogic接口和businesslogic类为spring框架中的bean提供了简易构件块。虽然该接口对于我们的简单应用程序逻辑来说不是必需的,但是它是spring框架所推荐的良好实践。

public interface ibusinesslogic
{
 public void foo();
}

public class businesslogic
implements ibusinesslogic
{
 public void foo()
 {
  system.out.println("inside businesslogic.foo()");
 }
}

  可以编写mainapplication类,借此练习businesslogic bean的公有方法。

import org.springframework.context.applicationcontext;
import org.springframework.context.support.filesystemxmlapplicationcontext;

public class mainapplication
{
 public static void main(string [] args)
 {
  // read the configuration file
  applicationcontext ctx =new filesystemxmlapplicationcontext("springconfig.xml");

  //instantiate an object
  ibusinesslogic testobject =(ibusinesslogic) ctx.getbean("businesslogicbean");

  // execute the public
  // method of the bean
  testobject.foo();
 }
}

  在businesslogic类及其关联接口中没有什么需要注意的。但是,mainapplication类初始化businesslogic对象的方式很有意思。通过使用ctx.getbean("businesslogicbean")调用,mainapplication将加载和管理businesslogic类的bean实例的任务转交给了spring框架

  允许spring控制businesslogic bean的初始化,这使得spring运行时有机会在bean被返回给应用程序之前执行j2ee系统所需的所有与bean相关的管理任务。然后spring运行时配置可以决定对bean应用哪些任务和模块。该配置信息由一个xml文件提供,类似于下面所示的:

<?xml version="1.0" encoding="utf-8"?>
<!doctype beans public
"-//spring//dtd bean//en"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

 <!-- bean configuration -->
 <bean id="businesslogicbean" class="org.springframework.aop.framework.proxyfactorybean">
  <property name="proxyinterfaces">
   <value>ibusinesslogic</value>
  </property>
  <property name="target">
   <ref local="beantarget"/>
  </property>
 </bean>
 <!-- bean classes -->
 <bean id="beantarget" class="businesslogic"/>
 </beans>
</beans>

  该配置文件,即springconfig.xml,指定要加载一个接口与ibusinesslogic相匹配的bean。该bean随后被关联到businesslogic实现类。看起来好像是费了很大力气只为了加载一个简单的bean并调用一个方法,但是您要知道,这个配置文件只是使spring框架可以透明地对应用程序应用其组件的众多特性的一个体现。

  图1显示了基本的顺序图:mainapplication原样执行,没有应用方面。





图1.没有对businesslogic bean应用方面时的顺序图


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons