`
yjshengshe
  • 浏览: 204594 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jdk-aop

 
阅读更多

//jdk代理

注意:使用JDK提供的动态代理实现 要求我们的目标对象必须实现接口 

 

 1 user接口

package com.spring.aop;

 

public interface User {

void save();

void update();

}

 

 2 的接口实现类

 

 package com.spring.aop;

 

public class UserImpl implements User {

private String name;

public UserImpl()

{

}

public UserImpl(String name)

{

this.name = name;

}

@Override

public void save() {

// TODO Auto-generated method stub

System.out.println("save:"+name);

}

@Override

public void update() {

// TODO Auto-generated method stub

System.out.println("update:"+name);

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

3 代理工厂的实现

package com.spring.aop;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

public class ProxyFactory implements InvocationHandler {

private Object target;

public Object createUserImpl(Object target)

{

this.target = target;

return Proxy.newProxyInstance(this.target.getClass().getClassLoader(),

this.target.getClass().getInterfaces(), this);

}

@Override

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {

// TODO Auto-generated method stub

UserImpl ui = (UserImpl)target;

Object result = null;

if (ui.getName() != null)

{

result = method.invoke(target, args);

}

return result;

}

}

4 测试结果,说白了,即使通过代理类生成新的代理类,代理类在原先的类的方法处理添加了新的处理

然后执行代理类的方法。即在不处理原先类的情况下改变了原先类的执行结果。

package com.spring.test;

 

import com.spring.aop.ProxyFactory;

import com.spring.aop.User;

import com.spring.aop.UserImpl;

public class AopTest {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

ProxyFactory a = new ProxyFactory();

User man = (User)a.createUserImpl(new UserImpl());

man.save();

man.update();

User woman = (User)a.createUserImpl(new UserImpl("woman"));

woman.save();

woman.update();

}

}

 

 

分享到:
评论

相关推荐

    spring-aop.jar各个版本

    spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    jboss-aop-jdk50-client.jar

    jboss-aop-jdk50-client.jar

    java-jdk1.6-jdk-6u45-windows-x64.zip

    2. 动态代理:引入了`java.lang.reflect.Proxy`类,使得动态创建代理对象成为可能,便于实现AOP(面向切面编程)。 3. NIO.2:Java 7引入了NIO.2,但1.6版本已经包含了一些改进,如更好的文件系统访问API,异步I/O...

    jdk-6u45-linux-x64.bin

    3. **动态代理**:Java 1.6引入了对动态代理的增强,允许在运行时创建接口的代理实现,这在AOP(面向切面编程)和事件处理中非常有用。 4. **增强的I/O和NIO**:JDK 1.6扩展了Java的I/O API,引入了NIO.2,提供了一...

    jdk-6u26-windows-i586.rar

    - **动态代理类**:允许在运行时创建实现了指定接口的新类,这在实现AOP(面向切面编程)或事件处理中非常有用。 - **改进的XML处理**:增强了Java API for XML Processing (JAXP),支持XPath 2.0和XSLT 2.0,使...

    spring-aop.xsd

    这里的`spring-aop-3.2.xsd`根据项目使用的Spring版本进行替换,以确保正确解析配置。 总的来说,`spring-aop.xsd`是Spring AOP配置的基础,它帮助开发者理解并正确编写AOP配置,提升开发效率。通过学习和熟练掌握...

    jdk-6u43-windows-x64 64位

    4. **动态代理**:JDK 6引入了动态代理类的实现,允许在运行时创建代理类,增强了面向切面编程(AOP)的能力。 5. **Swing增强**:Swing组件库得到了大量改进,包括更好的外观和感觉,以及新的组件和事件处理机制。...

    spring-aop.jar

    1. **AOP代理**:Spring AOP支持两种代理方式,即JDK动态代理和CGLIB代理。JDK代理用于实现接口的类,而CGLIB代理则用于未实现接口的类。spring-aop.jar包含了这些代理机制的相关类,如`org.springframework.aop....

    jdk-8u301-windows-x64.exe

    8. **Java动态代理(Dynamic Proxies)**: JDK 8提供了更强大的动态代理机制,允许在运行时创建接口的实现类,这对于AOP(面向切面编程)和测试框架非常有用。 9. **Nashorn JavaScript引擎**: JDK 8引入了Nashorn ...

    spring-aop-4.2.6.RELEASE.zip

    本资料包"spring-aop-4.2.6.RELEASE.zip"正是针对Spring AOP的一个重要版本,它与"spring-framework.zip"一同构成了强大的弹簧框架体系。开源项目的精神在此得以充分体现,为开发者提供了丰富的功能和高度的灵活性。...

    spring-aop-4.0.0.RELEASE

    - **代理模式**:Spring AOP通过两种代理方式实现,即JDK动态代理和CGLIB代理。前者适用于接口实现类,后者适用于无接口的类。 - **注解驱动**:从4.0.0.RELEASE开始,Spring AOP支持完全基于注解的配置,大大...

    jdk-1_5_0_11-windows-i586-p

    这些改进提高了代码的类型安全性、可读性和可维护性,同时也促进了面向切面编程(AOP)和元数据的应用。 在使用JDK 1.5时,开发者可以利用新的编译器选项,如"-target"和"-source",来控制源代码和字节码的目标版本...

    JDK-1.6-Windows-32位 官方

    3. **动态代理**:JDK 1.6引入了`java.lang.reflect.Proxy`类,允许开发者创建动态代理对象,方便实现回调和AOP(面向切面编程)。 4. **NIO.2**:新I/O API,也称为NIO.2,提供了更现代、更易用的文件系统操作接口...

    Spring-AOP-JDK动态代理

    本篇将详细讲解Spring中的AOP实现,特别是JDK动态代理的应用。 首先,我们要了解什么是AOP(Aspect Oriented Programming,面向切面编程)。AOP是一种编程范式,旨在解决应用程序中分散的、横切关注点的问题,如...

    Spring-Aop所有jar

    Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个...Spring Aop-4.0.0.RELEASE版本在保持易用性的同时,提升了性能和对新特性的支持,是Java开发者进行企业级应用开发的重要选择。

    jdk-6u45-linux-x64

    6. **动态代理(Dynamic Proxies)**: 动态代理允许在运行时创建符合给定接口的新类,这在实现AOP(面向切面编程)或事件监听器等方面非常有用。 7. **增强的异常处理**: 支持空指针异常的链式处理,使得调试时能更...

    jdk-6u45-windows-x64

    3. **动态代理**:Java语言规范中加入了动态代理,允许在运行时创建实现了指定接口的新类,这对于实现AOP(面向切面编程)和测试框架非常有用。 4. **NIO.2(New I/O 2)**:引入了新的文件系统API,提供更强大和...

    spring-aop源码解读

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,通过添加额外的行为(即“切面”)来增强应用程序的功能。在Spring AOP中,主要有三个核心概念:Advice、Pointcut和...

    java开发常用jar包之spring--aop.rar

    本资源"java开发常用jar包之spring--aop.rar"聚焦于Spring框架的一个重要组件——Aspect Oriented Programming(面向切面编程,简称AOP)。AOP是Spring框架的核心特性之一,它允许开发者将关注点从核心业务逻辑中...

Global site tag (gtag.js) - Google Analytics