J2EE开发中使用AOP技术在传统的OO面向对象技术中,任何逻辑都需用基于类来封装(这里主要讨论Java技术),随着项目的做大,在管理大量的类文件是非常困难的,而且现在软件提倡的是高层抽象,底层实现,一层一层的架起整个项目,最终体现给程序员的是当实现MVC的时候,就再也不用管理和理会底层的实现,包括数据库DAO层.
Java技术中提供了接口技术,接口就是对某一类事物的抽象,它可以由具体的类implements来实现,但是一个接口可能有多种实现,具体的实现将由程序员的设计不同而不同,如果我们调用接口类型,它到底和哪个实现类想关联呢?
通常情况下:如下:
public interface Interface{
public void say();
}
public class A implements Interface{
public void say(){
System.out.println("this is class A");
}
}
public class B implements Interface{
public void say(){
System.out.println("this is class B");
}
}
现在摆在面前的有一个接口和它的2个实现类,现在根据高层抽象理论,在实现业务逻辑时程序员将不再考虑它的底层实现A或B,但接口做为抽象,没有任何实现,具体是这么关联呢?
这里需要使用的是Spring的AOP技术:
首先定义Spring Ioc applicationContext.xml
<?xml version="1.0" encoding="1.0" ?>
<!DOCTYPE beans
PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-bean.dtd">'
<beans>
<bean id="A" class="A"/>
<bean id="B" class="B"/>
<bean id="Aproxy" class="org.springframework.aop.framework.ProxyBeanFactory">
<property name="proxyInterfaces">
<value>Interface</value>
<property>
<property name="target">
<ref local="A"/>
</property>
</bean>
<bean id="Bproxy" class="org.springframework.aop.framework.ProxyBeanFactory">
<property name="proxyInterfaces">
<value>Interface</value>
</property>
<property name="target">
<value>B</value>
</property>
</bean>
</beans>
具体业务逻辑实现:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test{
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Interface inter=(Interface)context.getBean("Aproxy");
inter.say();
}
}
以上程序将输出" this is class A" 可以看出,做为高层抽象的概念完全体现了出来,在test类中根本就没有A类的任何痕迹.
另外一种AOP技术就是传奇的AspectJ技术.借助与cglib动态字节码生成技术,它可以在不用改写源代码的情况下直接对目标程序进行添加功能.
假设现在有个类 C
public class C {
public void say(){
System.out.println("This is Class C");
}
现在想要给它加个方法 otherSay()用来输出"hello world",传统的机械式方法就是直接修改C的代码,这样做的后果就是造成了C必须被重新编译,但是用AspectJ技术就可以在不用重新编译的情况下直接给C注射一个新方法,具体实现如下:
public interface InterfaceC{
public void otherSay();
}
public aspect D{
declare parents: C extends InterfaceC;
public void C.otherSay(){
System.out.println("hello world");
}
}
现在就可以这样调用:
public class test{
public static void main(String[] dd){
C c=new C();
//执行C的原配方法 say
c.say();
//执行被动态注射后的方法
InterfaceC cc=(InterfaceC)c;
cc.otherSay();
}
}
分享到:
相关推荐
### AOP技术在J2EE系统构建中的应用 #### 一、引言 在软件开发过程中,特别是构建大型的企业级应用时,系统中往往会存在一些跨多个模块的功能需求,例如事务管理、日志记录、安全控制等。这些功能通常被称为**横切...
在J2EE开发中,AOP技术的应用主要体现在以下几个方面: 1. 事务管理:通过AOP,开发者可以轻松实现声明式事务管理,将事务控制逻辑从业务代码中分离出来。 2. 安全性控制:可以将安全检查等关注点集中管理,不必在每...
《J2EE开发全程实录》是一本深入探讨企业级软件开发中J2EE平台运用的专业书籍,由杨中科撰写,他是一名资深的IT专家,专注于开源技术的研究与推广,曾在国内某ERP公司任职,拥有丰富的实践经验。本书不仅涵盖了J2EE...
### 笔试试题-J2EE开发技术知识点解析 #### 一、选择题解析 ##### 1.... - **答案**:【C】...通过以上分析,我们对J2EE开发技术中的关键知识点进行了详细的解释和示例演示,希望能帮助理解相关概念和技术细节。
本话题主要关注J2EE开发中的高级技术,包括Struts、Spring、Hibernate、Ajax、JavaScript、CSS以及一些常用的组件,如文件上传和下载功能、单点登录等。下面我们将深入探讨这些技术及其应用。 1. **Struts**:...
总的来说,j2EE开发jar包大全是一个集成了多种常见开发需求的资源集合,为开发者提供了一个方便的起步点,使得他们能够在项目中快速集成和使用各种功能。不过,需要注意的是,尽管这些jar包覆盖了许多常用场景,但...
8. **Spring框架**:虽然Spring不是J2EE的一部分,但它在企业级Java开发中非常流行,提供了依赖注入、AOP(面向切面编程)、MVC(Model-View-Controller)等特性,简化了J2EE应用的开发。 9. **Struts、JSF等MVC...
J2EE开发中,JDBC jar包提供了数据库连接池管理,提高了数据库操作的效率。 3. **EJB(Enterprise JavaBeans)**:EJB是J2EE的核心组件模型,提供了一种创建可部署、可复用的业务逻辑组件的方法。EJB有三种类型:...
通过"J2EE综合案例开发PPT"的学习,你将掌握如何在实际项目中运用这些技术,理解它们之间的协作机制,以及如何通过配置文件和编程实现它们的功能。课程内容可能涵盖创建MVC结构的Web应用、实体类的设计与数据库映射...
在J2EE开发中,SSH框架的整合使用能够帮助开发人员高效地处理复杂的业务逻辑,同时保持代码的清晰和模块化。通常,Struts2负责处理HTTP请求并调用业务逻辑,Spring管理对象的生命周期和依赖关系,而Hibernate则作为...
J2EE企业级开发考试大纲详细涵盖了J2EE开发中的关键技术和知识点,旨在测试学生对这一领域的理解和应用能力。以下是大纲中涉及的主要内容: 1. **Struts框架技术**:Struts是Java Web开发中常用的MVC框架。考生需要...
《面向AOP的J2EE开发基础》这本书对AOP的基本概念进行了全面介绍,并结合J2EE平台的实际案例,详细解释了如何利用AOP技术解决常见的开发问题。通过学习本书,开发者可以更好地理解AOP的思想及其在企业级应用中的价值...
【基于J2EE开发的BBS】是一款由天乙软件工作室研发并开源的论坛系统,其设计和实现充分利用了J2EE技术栈的优势,旨在提供一个高效、稳定且易于扩展的在线讨论平台。J2EE(Java 2 Platform, Enterprise Edition)是...
文件《深入Spring+2:轻量级J2EE开发框架原理与实践.pdf》很可能会详细阐述以上内容,并通过实例演示如何在实际项目中应用这些技术。读者可以期待了解到Spring2的完整功能集,包括Spring的MVC、AOP、ORM、事务管理、...
### j2ee的开发与设计技术 #### 一、引言 随着计算机网络技术的快速发展,分布式数据库系统作为一项关键技术,在企业级应用中扮演着越来越重要的角色。J2EE(Java 2 Platform, Enterprise Edition)作为一套全面的...
Java+J2EE开发知识是IT领域中一个重要的学习主题,涵盖了广泛的编程和技术概念。Java是一种多平台的、面向对象的编程语言,被广泛应用于服务器端应用开发,尤其是在企业级应用中,J2EE(Java Platform, Enterprise ...