iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >J2EE中使用Spring AOP框架和EJB组件(1)
  • 652
分享到

J2EE中使用Spring AOP框架和EJB组件(1)

2023-06-03 07:06:20 652人浏览 薄情痞子
摘要

J2EE中使用spring aop框架和EJB组件(1)[@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术。它还给出了几个实际的例子,说明如何借助于Spring的AOP

J2EE中使用spring aop框架和EJB组件(1)

[@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术。它还给出了几个实际的例子,说明如何借助于Spring的AOP框架、应用面向方面的方法来扩展J2EE应用程序,并在不修改现有代码的情况下实现新的业务需求。

快速发展的开发人员社区、对各种后端技术(包括JMS、JTA、JDO、Hibernate、iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级ioc容器和内置的AOP运行时,这些因素使得Spring Framework对于J2EE应用程序开发十分具有吸引力。Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面——从监控和审计、缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求。

本文将向您介绍Spring的AOP框架在J2EE应用程序中的实际应用。

简介

J2EE技术为实现服务器端和中间件应用程序提供了坚实的基础。J2EE容器(比如BEA WEBLogic Server)可以管理系统级的元素,包括应用程序生命周期、安全性、事务、远程控制和并发性,而且它可以保证为JDBC、JMS和JTA之类的常见服务提供支持。然而,J2EE的庞大和复杂性使开发和测试变得异常困难。传统的J2EE应用程序通常严重依赖于通过容器的JNDI才可用的服务。这意味着需要大量直接的JNDI查找,或者要使用Service Locator模式,后者稍微有所改进。这种架构提高了组件之间的耦合度,并使得单独测试某个组件成为几乎不可能实现的事情。您可以阅读Spring Framework创建者所撰写的J2EE Development without EJB一书,其中深入分析了这种架构的缺陷。

借助于Spring Framework,可以将使用无格式Java对象实现的业务逻辑与传统的J2EE基础架构连接起来,同时极大地减少了访问J2EE组件和服务所需的代码量。基于这一点,可以把传统的OO设计与正交的AOP组件化结合在一起。本文稍后将会演示如何重构J2EE组件以利用Spring托管的Java对象,然后应用一种AOP方法来实现新特性,从而维护良好的组件独立性和可测试性。

与其他AOP工具相比,Spring提供了AOP功能中的一个有限子集。它的目标是紧密地集成AOP实现与Spring ioC容器,从而帮助解决常见的应用问题。该集成是以非侵入性的方式完成的,它允许在同一个应用程序中混合使用Spring AOP和表现力更强的框架,包括AspectJ。Spring AOP使用无格式Java类,不要求特殊的编译过程、控制类装载器层次结构或更改部署配置,而是使用Proxy模式向应该由Spring IoC容器托管的目标对象应用通知。

可以根据具体情况在两种类型的代理之间进行选择:

◆第一类代理基于Java动态代理,只适用于接口。它是一种标准的Java特性,可提供卓越的性能。

◆第二类代理可用于目标对象没有实现任何接口的场景,而且这类接口不能被引入(例如,对于遗留代码的情况)。它基于使用CGLIB库的运行时字节码生成。

对于所代理的对象,Spring允许使用静态的(方法匹配基于确切名称或正则表达式,或者是注释驱动的)或动态的(匹配是在运行时进行的,包括cflow切入点类型)切入点定义指派特定的通知,而每个切入点可以与一条或多条通知关联在一起。所支持的通知类型有几种:环绕通知(around advice),前通知(before advice),返回后通知(after returning advice),抛出异常后通知(after throwing advice),以及引入通知(introduction advice)。本文稍后将给出环绕通知的一个例子。想要了解更详细的信息,可以参考Spring AOP框架文档。

正如先前提到的那样,只可以通知由Spring IoC容器托管的目标对象。然而,在J2EE应用程序中,组件的生命周期是由应用服务器托管的,而且根据集成类型,可以使用一种常见的端点类型把J2EE应用程序组件公开给远程或本地的客户端:

◆无状态的、有状态的或实体bean,本地的或远程的(基于RMI-IIOP)

◆监听本地或外部JMS队列和主题或入站JCA端点的消息驱动bean(MDB)

◆Servlet(包括Struts或其他终端用户UI框架、XML-rpc和基于SOAP的接口)

J2EE中使用Spring AOP框架和EJB组件(1)498)this.style.width=498;" />

图1:常见的端点类型

要在这些端点上使用Spring的AOP框架,必须把所有的业务逻辑转移到Spring托管的bean中,然后使用服务器托管的组件来委托调用,或者定义事务划分和安全上下文。虽然本文不讨论事务方面的问题,但是可以在“参考资料”部分中找到相关文章。

我将详细介绍如何重构J2EE应用程序以使用Spring功能。我们将使用XDoclet的基于JavaDoc的元数据来生成home和bean接口,以及EJB部署描述符。可以在下面的“下载”部分中找到本文中所有示例类的源代码。

重构EJB组件以使用Spring的EJB类

想像一个简单的股票报价EJB组件,它返回当前的股票交易价格,并允许设置新的交易价格。这个例子用于说明同时使用Spring Framework与J2EE服务的各个集成方面和最佳实践,而不是要展示如何编写股票管理应用程序。按照我们的要求,TradeManager业务接口应该就是下面这个样子:

public interface TradeManager {

public static String ID = "tradeManager";

public BigDecimal getPrice(String name);

public void setPrice(String name, BigDecimal price);

}

在设计J2EE应用程序的过程中,通常使用远程无状态会话bean作为持久层中的外观和实体bean。下面的TradeManager1Impl说明了无状态会话bean中TradeManager接口的可能实现。注意,它使用了ServiceLocator来为本地的实体bean查找home接口。XDoclet注释用于为EJB描述符声明参数以及定义EJB组件的已公开方法。



public class TradeManager1Impl implements SessionBean, TradeManager {

private SessionContext ctx;

private TradeLocalHome tradeHome;





public BigDecimal getPrice(String symbol) {

try {

return tradeHome.findByPrimaryKey(symbol).getPrice();

} catch(ObjectNotFoundException ex) {

return null;

} catch(FinderException ex) {

throw new EJBException("Unable to find symbol", ex);

}

}



public void setPrice(String symbol, BigDecimal price) {

try {

try {

tradeHome.findByPrimaryKey(symbol).setPrice(price);

} catch(ObjectNotFoundException ex) {

tradeHome.create(symbol, price);

}

} catch(CreateException ex) {

throw new EJBException("Unable to create symbol", ex);

} catch(FinderException ex) {

throw new EJBException("Unable to find symbol", ex);

}

}

public void ejbCreate() throws EJBException {

tradeHome = ServiceLocator.getTradeLocalHome();

}

public void ejbActivate() throws EJBException, RemoteException {

}

public void ejbPassivate() throws EJBException, RemoteException {

}

public void ejbRemove() throws EJBException, RemoteException {

}

public void setSessionContext(SessionContext ctx) throws EJBException,

RemoteException {

this.ctx = ctx;

}

}

--结束END--

本文标题: J2EE中使用Spring AOP框架和EJB组件(1)

本文链接: https://www.lsjlt.com/news/233438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • J2EE中使用Spring AOP框架和EJB组件(1)
    J2EE中使用Spring AOP框架和EJB组件(1)[@more@]本文介绍了一种把J2EE应用程序中的EJB转换为Spring托管组件的方法,以及转换之后可以采用的强大技术。它还给出了几个实际的例子,说明如何借助于Spring的AOP...
    99+
    2023-06-03
  • J2EE中使用Spring AOP框架和EJB组件(3)
    J2EE中使用Spring AOP框架和EJB组件(3)[@more@]此外还要注意,我们重写了setSessionContext()方法,以便告诉AbstractStatelessSessionBean跨所有EJB bean使用Sping...
    99+
    2023-06-03
  • 怎么在不使用spring框架中使用aop的功能
    本篇文章为大家展示了怎么在不使用spring框架中使用aop的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代...
    99+
    2023-06-22
  • 如何在不使用spring框架中使用aop的功能
    目录spring提供了两种方式的AOP使用使用xml配置方式使用注解方式AspectJ简介AspectJ的使用实例不使用spring的aop功能实现日志输出第一种第二种:通过面向接口...
    99+
    2022-11-12
  • Spring框架中一个有用的小组件之Spring Retry组件详解
    1、概述 Spring Retry 是Spring框架中的一个组件, 它提供了自动重新调用失败操作的能力。这在错误可能是暂时发生的(如瞬时网络故障)的情况下很有帮助。 在本文中,我们...
    99+
    2022-11-12
  • 如何在 Python 中使用 Spring 框架的文件上传组件?
    Spring 是一个非常流行的 Java 开发框架,它提供了一系列的组件和工具来帮助开发者快速构建高效、可维护的应用程序。其中,文件上传组件是一个非常实用的组件,它可以帮助我们在应用程序中实现文件上传功能。 那么,在 Python 中如何...
    99+
    2023-09-04
    文件 关键字 spring
  • 接口和数组在Java中如何运用Spring框架?
    Java作为一门广泛应用的编程语言,其流行的Spring框架也让人越来越感兴趣。其中,接口和数组在Spring框架中的运用也是一个重要的主题。在本文中,我们将探讨如何在Spring框架中使用接口和数组,以及如何通过演示代码来帮助读者更好地理...
    99+
    2023-08-09
    接口 spring 数组
  • 如何使用 PHP 解析 Spring 框架中的配置文件?
    Spring 是一个流行的 Java 开发框架,被广泛应用于企业级应用开发中。在 Spring 框架中,配置文件起着至关重要的作用,因为它们描述了应用程序中各个组件之间的关系,并提供了各种配置选项,以满足不同应用程序的需求。本文将介绍如何使...
    99+
    2023-07-02
    spring 文件 javascript
  • 如何使用 Python 解析 Spring 框架中的配置文件?
    Spring 框架是一个广泛使用的 Java 应用程序框架,它的主要特点是将业务逻辑与底层代码分离。在 Spring 中,应用程序的配置文件扮演着至关重要的角色,它们描述了应用程序的各种设置和配置,如数据库连接、日志设置、Web 应用程序上...
    99+
    2023-09-04
    文件 关键字 spring
  • 如何在 PHP 和 JavaScript 中使用 Spring 框架构建 API?
    Spring框架是一个流行的Java框架,用于构建Web应用程序和API。它提供了许多方便的功能和工具,可以帮助开发人员快速构建高质量的应用程序。在本文中,我们将讨论如何在PHP和JavaScript中使用Spring框架构建API。 安...
    99+
    2023-11-03
    javascript spring api
  • 如何使用ASP缓存和Spring框架来更有效地处理数组?
    ASP缓存和Spring框架是两个非常重要的技术,它们可以帮助我们更有效地处理数组。在本文中,我们将探讨如何使用这两个技术来优化数组的处理。 一、什么是ASP缓存? ASP缓存是一种技术,它可以将数据缓存在服务器的内存中,这样就可以更快地访...
    99+
    2023-10-23
    缓存 spring 数组
  • Java中接口和数组的运用:Spring框架的实现方式是什么?
    在Java编程中,接口和数组是两种非常重要的概念。其中,接口是一种定义了方法和常量的抽象类型,而数组则是一种可以存储多个相同数据类型的容器。在实际的编程中,这两个概念经常被用来设计和实现各种复杂的程序。在本文中,我们将重点讨论Spring...
    99+
    2023-08-09
    接口 spring 数组
  • 你是否知道如何在Java中使用Spring框架进行数组操作?
    Java作为一门广泛应用的编程语言,它的高效和可扩展性受到广泛认可。而Spring框架则是Java中最为流行的框架之一,为Java开发者提供了许多便利的工具和功能。在本篇文章中,我们将探讨如何使用Spring框架进行数组操作,希望对Java...
    99+
    2023-08-09
    接口 spring 数组
  • LeetCode中如何使用PHP和Spring框架来解决二维码问题?
    LeetCode是一个非常著名的面试题库和算法学习平台,它涵盖了各种各样的算法和数据结构。在这个平台上,许多程序员都会遇到二维码问题。二维码是现代生活中不可或缺的一部分,因此在LeetCode上解决二维码问题非常有意义。 本文将介绍如何在L...
    99+
    2023-10-21
    二维码 spring leetcode
  • 在Go和Spring框架中使用二维码和日志记录:有什么好处?
    随着移动互联网的普及,二维码已经成为了现代人不可或缺的工具之一。不仅在生活中,二维码也在企业级应用中发挥着重要的作用。在本文中,我们将探讨在Go和Spring框架中使用二维码和日志记录的好处,并展示如何在代码中应用。 一、使用二维码的好处...
    99+
    2023-08-19
    spring 日志 二维码
  • Java编程中使用Spring框架和索引技术的算法实战分享。
    Java编程中使用Spring框架和索引技术的算法实战分享 Java是一种非常流行的编程语言,而Spring框架则是Java中使用最广泛的框架之一。在Java编程中,使用Spring框架可以大幅度提高编程效率和代码质量,同时,利用索引技术可...
    99+
    2023-06-30
    索引 spring 编程算法
  • Java编程中的算法优化:如何使用Spring框架和索引技术?
    在Java编程中,算法优化一直是一个关键问题。如果您的代码没有经过优化,那么它可能会变得非常缓慢,而且无法满足大型数据集或高并发负载的要求。为了解决这个问题,开发人员通常会使用一些优化技术,比如使用Spring框架和索引技术。本文将介绍这...
    99+
    2023-06-30
    索引 spring 编程算法
  • 你知道如何在ASP和Bash中使用框架和数组吗?看这里!
    ASP和Bash是两种非常常用的编程语言,在开发过程中,使用框架和数组可以提高开发效率和代码质量。本文将介绍如何在ASP和Bash中使用框架和数组。 一、ASP中使用框架和数组 框架 ASP中常用的框架有Classic ASP、ASP....
    99+
    2023-10-19
    bash 框架 数组
  • 如何在Spring框架中使用Python和Numpy构建高效的数据处理应用?
    Spring框架是一个强大的Java框架,被广泛应用于企业级应用开发。然而,与Java相比,Python在数据处理方面拥有更强大的能力和更高的效率。在本文中,我们将介绍如何在Spring框架中使用Python和Numpy构建高效的数据处理应...
    99+
    2023-06-13
    git spring numpy
  • 数组是框架的重要组成部分,你知道ASP和Bash中如何使用吗?
    数组是计算机编程中常用的数据结构之一,它可以将多个相关的数据组合在一起,并根据需要进行访问和处理。在框架的开发中,数组也是一个重要的组成部分。在ASP和Bash中,数组的使用也是非常重要的。在本文中,我们将介绍如何在ASP和Bash中使用数...
    99+
    2023-10-19
    bash 框架 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作