`
QQ371496669
  • 浏览: 940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

体现AOP思想的一个例子(InvocationHandler)

阅读更多

HelloWorld类:

public class HelloWorld implements HelloWorldInterface{

	@Override
	public void say(String con) {
		System.out.println(con);
	}
	
}

 HelloWorldInterface接口:

public interface HelloWorldInterface {
	public void say(String con);
}

 

LogProxy类:

//代理实现接口InvocationHandler
//Java动态代理

public class LogProxy implements InvocationHandler {

	private Logger logger = Logger.getLogger(this.getClass().getName());
	private Object delegate;

	// 绑定代理对象
	public Object bind(Object delegate) {
		this.delegate = delegate;
		return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
				delegate.getClass().getInterfaces(), this);
	}

	// 针对接口编程
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result = null;
		try {
			logger.log(Level.INFO, args[0] + "开始打出日志");
			result = method.invoke(delegate, args);
			logger.log(Level.INFO, args[0] + "结束日志");
		} catch (Exception e) {
			logger.log(Level.INFO, e.toString());
		}
		return result;
	}

}

 TestHelloWorld类:

public class TestHelloWorld {
	
	public static void main(String[] args) {
		LogProxy logProxy = new LogProxy();
		HelloWorldInterface hf = (HelloWorldInterface)logProxy.bind(new HelloWorld());
		hf.say("你好");
	}
}

 

分享到:
评论

相关推荐

    AOP 动态代理(Proxy invocationHandler)

    AOP 动态代理(Proxy invocationHandler),Spring的动态代理的介绍

    实现AOP的一个例子

    它可以是一个或多个方法、类或特定的执行条件。切点表达式用于定义这些条件,通常使用正则表达式或专门的语法。 4. **连接点(Join Point)**:程序执行中的特定点,如方法调用或异常抛出。连接点是可能插入通知的...

    aop思想的java实现

    以下是一个使用动态代理实现日志的例子: ```java public interface Service { void execute(); } public class RealService implements Service { @Override public void execute() { // 业务逻辑 } } ...

    简单spring aop 例子

    现在,我们来看如何创建一个简单的Spring AOP例子: 1. **定义切面(Aspect)**:切面是包含通知(Advice)和切入点(Pointcut)的类。通知定义了要执行的逻辑,切入点定义了何时执行。例如,我们可以创建一个名为`...

    适用spring 实现AOP思想

    在本文中,我们将深入探讨Spring AOP的核心概念、工作原理以及如何在实际项目中实现AOP思想。 1. **AOP概述** 面向切面编程(Aspect-Oriented Programming,AOP)是一种编程范式,旨在减少代码的重复性,提高模块...

    Spring 动态代理和aop切面编程例子

    在这个例子中,`@Transactional`注解告诉Spring在`addUser`方法的执行过程中开启和提交一个数据库事务。如果方法抛出异常,事务将被回滚,保证了数据的一致性。 总结来说,Spring的动态代理和AOP是强大的工具,它们...

    Android-一个使用AOP思想的Android动态请求框架

    本文将深入探讨"Android-一个使用AOP思想的Android动态请求框架",并以此为基础,详细讲解AOP(面向切面编程)的概念以及在Android中的实际应用。 **AOP概述** 面向切面编程(Aspect-Oriented Programming,简称AOP...

    AOP的例子 记录日志

    在`test_AOP`目录下的测试文件中,我们可以创建一个简单的类,包含一些公共方法,然后运行这个测试来验证日志记录是否正确工作。在方法调用前后,应该能看到对应的方法名和执行状态的日志输出。 **总结** 通过...

    spring的aop简单例子

    在这个例子中,`LoggingAspect`是一个切面,`logBefore`方法是一个前置通知,将在匹配的方法执行前运行。 除了这些基本的通知类型,还有`@AfterReturning`(后返回通知)、`@AfterThrowing`(异常抛出通知)和`@...

    AOP控制权限编程例子

    通过AOP,我们可以创建一个拦截器,该拦截器在方法调用之前或之后执行,以检查用户的访问权限。 **AOP术语** 1. **切面(Aspect)**:切面是关注点的模块化,它封装了横切关注点,如日志、事务和安全性。 2. **...

    Aop jdk proxy实现小例子

    通过JDK Proxy,我们可以在运行时创建一个接口的实现类,并在调用接口方法时插入自定义的处理逻辑,这就是AOP的核心思想——“织入”(Weaving)。下面我们将详细讲解如何使用JDK Proxy实现Aop。 首先,我们需要...

    Spring AOP完整例子

    在Spring AOP的例子中,我们可能会创建一个`@RunWith(SpringJUnit4ClassRunner.class)`标记的测试类,以利用Spring的测试支持。在测试方法中,可以注入需要的bean,然后调用方法来触发AOP代理。这样,通知将在适当的...

    Spring IOC AOP MVC 简单例子

    当需要一个对象时,不再由代码直接创建,而是由Spring容器负责实例化、装配和管理。这使得代码更加松耦合,易于测试和维护。 2. Spring AOP(面向切面编程): AOP允许开发者将关注点从核心业务逻辑中分离出来,如...

    AOP思想和事务注解应用

    AOP思想和事务注解应用

    SSH例子+AOP例子

    在“AOP例子”中,增加操作可能涉及到定义一个切面,这个切面会在特定的方法执行前后执行,比如在增加操作之前检查用户的权限,或者在操作之后记录日志。通过使用@Aspect注解定义切面,@Before、@After、@Around等...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    Spring AOP 是Spring框架提供的一个功能模块,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中解耦出来,通过在方法调用前后进行拦截来实现。这些横切关注点通常是一些与业务逻辑不直接相关的服务...

    aop思想的java代码实现

    用户只需要提供一个实现`InvocationHandler`接口的类,该类定义了如何处理方法调用,包括添加横切关注点的行为。这种方式在处理大量或未知类型的对象时非常有用。 在学习和使用AOP时,有以下几个关键概念需要理解:...

    aop使用例子源码

    - **切面(Aspect)**:是AOP的核心,它封装了多个相关操作,比如日志记录、事务管理等,形成一个独立的模块。 - **通知(Advice)**:在特定连接点上执行的代码,也就是切面的具体行为,包括前置通知、后置通知、...

    AOP练习小例子

    容器,如Spring框架在Java中的应用,或者Unity Container在.NET中的应用,负责管理和组装对象,而动态代理则是AOP的关键技术之一,它可以在运行时创建一个代理类来拦截方法调用,从而插入切面逻辑。 **C#反射**是...

    动态代理实现AOP思想

    以下是一个简单的例子,展示了如何使用Java动态代理实现AOP: ```java import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; interface MyInterface {...

Global site tag (gtag.js) - Google Analytics