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

(动态代理)spring for android 初探

 
阅读更多

Spring 的精华就是IOC AOP,主要通过反射实现。 

当需要为多个不具有继承层次的对象引入同一个公共行为的时候,例如记录日志,安全检查等等。如果考虑用OOP的思想进行设计,需要为每一个对象实现相同功能的记录日志或者安全检查的方法,这样,虽然能解决问题,但是其代价就是在程序中存在大量的重复性代码。

那么,如何才能更好的解决此问题呢?此时需要用到AOP(面向切面编程)的思想。而利用java中的动态代理机制就能很容易的实现AOP

 


 

 

接口:

 

public interface Log {
	 public   void logging();
}

 目标类:

 

public class LogImpl implements Log {

	@Override
	public void logging() {
		  System.out.println("=====logging方法执行,写入日志======");

	}

}

 代理类:

 

package com.test.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class LogProxy implements InvocationHandler {
	private Object proxyObj;

	public LogProxy(Object obj) {
		this.proxyObj = obj;
	}

	@SuppressWarnings("unchecked")
	public static Object bind(Object obj) {
		Class cls = obj.getClass();
		return Proxy.newProxyInstance(cls.getClassLoader(),
				cls.getInterfaces(), new LogProxy(obj));

	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		dobefore(method);
		Object object = method.invoke(proxyObj, args);
		doafter(method);
		return object;
	}

	private void dobefore(Method method) {
		prt("方法" + method.getName() + "執行前");
	}

	private void doafter(Method method) {
		prt("方法" + method.getName() + "執行后");
	}

	public void prt(String msg) {
		System.out.println(msg);
	}
}

 

客户端调用:

 

public class Testlog {
	 public static void main(String[] args) {
	       // TODO Auto-generated method stub
	       Log login = (Log)LogProxy.bind(new LogImpl());
	       
	       
	       login.logging();
	        
	 
	    }
}

 运行结果:

 

 

方法logging執行前
=====logging方法执行,写入日志======
方法logging執行后
  • 大小: 23.5 KB
分享到:
评论

相关推荐

    Spring For Android初体验

    《Spring for Android初体验》 在移动开发领域,Android开发者通常使用Java或Kotlin进行应用构建,但随着技术的发展,Spring框架也开始涉足Android世界。Spring for Android是Spring.io推出的一个库,旨在帮助...

    Spring for Android

    Spring for Android jar包 doc文档 源码 1.0.0M3版 Spring for Android jar包 doc文档 源码 1.0.0M3版

    Spring for Android API(Spring for Android 开发文档).CHM

    Spring for Android。 官网 Spring for Android API。 Spring for Android 开发文档。

    Spring+Android框架

    7. **Spring Cloud for Android**:虽然不直接包含在Spring for Android中,但可以将Spring Cloud的概念应用到Android,实现微服务架构,提高应用的扩展性和灵活性。 通过学习和实践"Spring+Android框架",开发者...

    Spring For Android 官方例子

    Spring For Android是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,这其中包括了你可以使用该项目提供的RestTemplate来为你的Android客户端提供REST服务,另外该项目还提供了跟其它诸如Twitter...

    spring-android-core-1.0.0.RELEASE-sources.jar

    《Spring for Android Core 1.0.0.RELEASE 源码解析》 Spring框架作为Java领域的重量级选手,早已深入人心。然而,Spring并不仅仅局限于服务端开发,它也拓展到了移动领域,推出了Spring for Android。这个框架的...

    spring-android-samples

    《Spring for Android实战案例解析》 在Android开发中,Spring框架的应用越来越广泛,尤其是在网络通信和数据处理方面。本文将围绕"spring-android-samples"这一主题,深入探讨Spring框架在Android平台上的应用,...

    spring for android 源码

    spring for android 源码

    spring+动态代理

    Spring框架提供了一种便捷的方式来实现动态代理,这使得我们可以在不修改原有代码的情况下扩展或增强已有功能。在本篇中,我们将深入探讨Spring如何使用动态代理以及其在实际开发中的应用。 动态代理的核心概念是...

    Spring for Android 2 中文 参考手册 中文文档

    Spring for Android 是一个项目,旨在将Spring Framework的功能扩展到Android平台上。这样,开发者可以在Android应用中使用Spring Framework,特别是利用RestTemplate作为Android应用的REST客户端,从而能够更便捷地...

    spring之AOP(动态代理)

    在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...

    Android代码-Spring for Android演示

    Spring for Android Samples This repository contains sample projects illustrating usage of Spring for Android. Each project requires set up of the Android SDK, command line tools, Maven, the Android ...

    Spring-android jar包及doc

    Spring-android 是一个专门为Android平台设计的轻量级框架,它将Spring框架的优秀特性引入到移动开发中,帮助开发者更高效、更灵活地构建Android应用。这个资源包含的"spring-android-1.0.0.RELEASE"是Spring-...

    spring for android

    spring for android官方demo

    JDK动态代理 spring aop 的原理

    Spring AOP(面向切面编程)则是一种流行的应用框架,它利用动态代理来实现对业务代码的切面增强,如日志、事务管理等。现在让我们深入探讨JDK动态代理和Spring AOP的原理。 首先,JDK动态代理基于Java的反射机制,...

    用spring构建android互联网应用

    首先,`libs.zip`可能包含了Spring for Android所需的库文件,这些库如Spring Android Core、Spring Android REST Template等,是构建Android应用与服务器端交互的基础。Spring Android Core提供了一些基本服务,如...

    spring-android-1.0.0.M3

    《Spring for Android 1.0.0.M3 深度解析》 Spring for Android 是著名的企业级开发框架Spring Framework的扩展,专为Android平台设计,旨在提供一套完整的、一致的开发工具集,使得Android开发者可以利用Spring的...

    Spring框架中JDK动态代理和cglib动态代理

    Spring 框架中 JDK 动态代理和 CGLIB 动态代理是 Spring AOP 中一个非常重要的知识点。Spring AOP 框架会根据实际情况选择使用 JDK 的动态代理还是 CGLIB 的动态代理。 JDK 动态代理是 Java 自带的动态代理机制,它...

    四、Spring源码分析——动态代理

    在Spring框架中,动态代理是实现AOP(面向切面编程)的核心技术之一。它允许我们在不修改原有代码的情况下,为方法添加额外的功能,如事务管理、日志记录等。本篇文章将深入探讨Spring中的动态代理机制,以及它是...

    Java动态代理(Spring Aop原理)

    在Spring框架中,AOP(面向切面编程)就是基于Java动态代理来完成的,用于实现横切关注点,如日志、事务管理等。这篇博客的文章链接虽然没有给出具体内容,但我们可以根据Java动态代理和Spring AOP的基本概念来深入...

Global site tag (gtag.js) - Google Analytics