`
n_meng
  • 浏览: 29643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

接口的实现

阅读更多
AOP专业术语:

1.切面 Aspect:交叉要实现的功能
2.连接点:应用程序执行过程中插入切面的地点,此处可以是方法的调用,异常抛出甚至是要修改的字段
3.通知:通知是切面的实际实现。它通知应用系统新的行为,通知在连接点插入到应用系统中。
4.切入点:定义了通知应该应用在哪些连接点.通常通过指定类名和方法名,或匹配类名和方法名
式样的正则表达式来指定切入点。
5.引入:允许为已存在的类添加新的属性和方法
6.目标对象: 被通知的对象。即可是编写的类也可以是添加定制行为的第三方类。
7.代理对象:将通知应用到目标对象后创建的对象

8.织入:将切面应用到目标对象从而创建一个新的代理对象的过程.切面在指定接入点
   被织入到目标对象中,织入发生在目标对象声明周期的多个点上。
    1、编译器:切面在目标对象编译时织入(需要特殊的编译器)。
     Java源代码.java------>.class

    2、类装载期:切面在目标对象被载入到JVM时织入(需要特殊的类载入器,在类的载入到应用程序之前增强目标对象的字节码)。
     .class---JVM
     
    3、运行期 切面在应用系统运行时织入(通常:aop)
  

9.什么是AOP呢?
   在不该变源码的情况下,为类添加新的功能。

-------------------------------------------------------------------------------
例子:
接口代理
前置通知的实现:------
创建一个接口类:<EmpService.java>
package cn.csdn.service;
//接口类
public interface EmpService {

public void work();
}

创建一个实现类接口:
<EmpserviceImpl.java>

package cn.csdn.service;
//接口实现类
public class EmpServiceImpl implements EmpService{

@Override
public void work() {
System.out.println(".....员工工作????");

}
 
}


创建一个class类
<MyBeforeAdvice.java>类


package cn.csdn.advice;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class MyBeforeAdvice implements MethodBeforeAdvice{
/*
* arg0:代表的是方法。
* arg1:代表的是方法参数。
* arg2:代表的是目标对象
*/
@Override
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("员工大卡..............");

}

}

bean的声明在<applicationContext.xml>中

<!-- 声明前置通知 -->
<bean id="myBeforeAdvice" class="cn.csdn.advice.MyBeforeAdvice" />
<!--  声明目标对象 -->
<bean id="empServiceTarget" class="cn.csdn.service.EmpServiceImpl" />

<!--声明代理对象  -->
<bean id="empServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 声明代理接口  -->
<property name="proxyInterfaces">
<list>
<value>cn.csdn.service.EmpService</value>
</list>
</property>
<!-- 拦截器的名称 -->
<property name="interceptorNames">
<list>
<value>myBeforeAdvice</value>
</list>
</property>
<!-- 声明代理的目标对象 -->
<property name="target">
<ref bean="empServiceTarget" />
</property>
</bean>

第三部:
<App.java>中测试类


package cn.csdn.service;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App {
  @Test
  public void app(){
  /*获取代理对象*/
  ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:a*.xml");
  EmpService es=(EmpService) ac.getBean("empServiceProxy");
/*调用代理对象的方法*/
  es.work();
  }
}

-------------------------------------------------------------------
基于接口的实现:
EmpService es=(EmpService) ac.getBean("empServiceProxy");

基于类的实现:

在bean中
<!-- 采用CGLIB的代理 -->
<property name="proxyTargetClass" value="true"/>
添加类库文件包:lib/cglib-nodep-2.1_3.jar
将App.java
EmpServiceImpl es=(EmpServiceImpl) ac.getBean("empServiceProxy");
分享到:
评论

相关推荐

    基于Java抽象类和接口实现疯狂动物城

    本实验手册即根据需求模拟完成一个简易的疯狂动物城游戏系统, 平台的全称为:使用抽象类和接口实现疯狂动物城项目(后简称为: crazyZoo) 。该系统的主要功能包括:查看动物城成员、入驻动物城、修改动物信息、查找疯狂...

    C++接口实现总结

    这篇博客"《C++接口实现总结》"可能讨论了如何在C++中实现接口,以及它在实际开发中的应用。下面我们将详细探讨C++中实现接口的一些常见方法和相关知识点。 1. **抽象类(Abstract Class)**:C++通过包含纯虚函数...

    简单的.net接口实现案例

    本案例"简单的.net接口实现案例"旨在展示如何在.NET环境中定义和实现接口。 首先,我们需要了解接口的基本语法。在C#中,接口使用`interface`关键字声明,其结构包含方法签名、属性、索引器和事件。例如: ```...

    通用IDispatch接口实现方法

    5. **实现IDispatch接口**:尽管MFC没有提供现成的IDispatch接口实现,但可以使用ATL的IDispatchImpl类作为基础,或者手动实现GetIDsOfNames、Invoke等方法。GetIDsOfNames用于根据名称查找DISPID,Invoke则负责实际...

    Java编程调用微信接口实现图文信息推送功能

    主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下

    UML类图中的接口与接口实现

    ### UML类图中的接口与接口实现 #### 一、接口的概念 在统一建模语言(UML)中,接口(Interface)是一个重要的概念,它主要用于描述系统内部或系统之间如何进行交互。根据UML规范(UML Infrastructure ...

    Java SE程序 接口实现的工厂模式

    Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现的工厂模式Java SE程序 接口实现...

    C++连接CTP接口实现简单量化交易(行情、交易、k线、策略)

    C++连接CTP接口实现简单量化交易(行情、交易、k线、策略)

    net 接口实现,接口定义,接口和类,接口,类

    本文将深入探讨.NET中的接口实现、接口定义、接口与类的关系,以及接口与类的区别。 ### 接口定义 接口通过`interface`关键字进行定义,它由一组抽象成员组成,包括方法、属性、索引器和事件。例如,一个简单的`...

    northstar盈富量化平台CTP网关接口实现

    northstar盈富量化平台CTP网关接口实现

    项目运行期间热插拔接口实现类

    在IT行业中,热插拔(Hot Swapping)接口实现是一种重要的功能,特别是在分布式系统、容器化环境或持续集成/持续部署(CI/CD)流程中。热插拔接口实现允许在程序运行时添加、移除或替换接口的实现,而无需停止或重启...

    C# ashx接口实现 实例

    首先,`JieKou`文件夹中的内容很可能是服务器端的接口实现。ASHX接口是基于.NET Framework的HTTP服务组件,它不需要完整的ASP.NET页面生命周期,因此执行效率较高。在C#中,我们通过创建一个继承自`System.Web....

    接口实现客户端demo

    在这个“接口实现客户端demo”中,我们可以推测这是一个关于如何在客户端应用中使用接口来获取或发送数据的示例。通过提供的链接(已省略,因为无法直接访问),开发者ZXW136511485详细解释了如何实现这个过程。这个...

    致远OA开发REST远程接口实现发送表单

    本文将深入探讨如何在“致远OA”(ZhiYuan Office Automation)系统中通过Java开发REST远程接口,实现远程发起OA表单的功能。我们将详细介绍这个过程,并提供相关的代码示例、所需jar包以及致远API的引用地址。 ...

    ARM的调试接口RDI接口实现

    RDI接口通常通过串行线、USB或JTAG接口实现,为开发者提供了灵活的远程调试能力。 multi-ice-gdb是ARM公司开源的一个调试工具,它支持RDI接口,可以与GDB(GNU调试器)配合使用。GDB是广泛使用的跨平台调试器,能够...

    基于FPGA的PCIe接口实现.doc

    "基于 FPGA 的 PCIe 接口实现" PCI Express(PCIe)是一种高性能互连协议,应用于网络适配、图形加速、服务器、大数据传输、嵌入式系统等领域。PCIe 协议在软件层上可兼容于 PCI 和 PCI-X,但同时也有明显的不同。...

    Java 实验 用接口实现求三角形,圆形,矩形的面积和周长

    用接口设计并实现面积与周长计算 要求:①定义一个接口,其中包含一个计算面积的抽象方法和一个计算周长的抽象方法;②输入数据为圆的半径、三角形的三条边长、矩形的长和宽,对于用户的输入要有友好提示;③程序...

    ISP接口实现跨域.rar

    在这个“ISP接口实现跨域.rar”压缩包中,我们关注的是如何在易语言环境下,利用ISP接口来解决Web应用中的跨域问题。 跨域是Web开发中的一个重要概念,由于浏览器的同源策略限制,JavaScript不能随意访问不同源的...

    纯虚函数接口 实现的dll动态链接库,

    本示例中的"纯虚函数接口 实现的dll动态链接库"是一个设计模式,通过抽象类定义接口,并将其实现封装在一个DLL中。下面我们将深入探讨这一主题。 首先,让我们了解纯虚函数。在C++中,虚函数是基类中声明的成员函数...

Global site tag (gtag.js) - Google Analytics