应用java的代理类与annotation

一.代理模式在架构中有者广泛的用途。java中已经提供了动态代理类来方便大家使用。下面是应用的一个例子。

1.接口类 UseJavaProxy.java

package test;

public interface UseJavaProxy {
	public void theCloseMethod();
}

 

2.实现测试类 UseJavaProxyImpl.java

package test;

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

public class UseJavaProxyImpl implements UseJavaProxy {
	
	public void theCloseMethod() {
		System.out.println("the close method is in process");
	}

	public static void main(String[] args) {
		//得到接口声明的方法
		UseJavaProxy useJavaProxy = (UseJavaProxy) Proxy.newProxyInstance(UseJavaProxyImpl.class.getClassLoader(),
				UseJavaProxyImpl.class.getInterfaces(),
				new InvocationHandler(){
			
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				System.out.println("before--------"+method.getName());
				//执行真正的方法
				method.invoke(new UseJavaProxyImpl(),args);
				System.out.println("after--------"+method.getName() + "\n");
				return null;
			}
			
		});
		
		//测试
		useJavaProxy.theCloseMethod();
	}

}

 

 二.当代理和java的annoutation结合结合使用的时候,可以在某些地方取代xml等配置,方便我们的编程。下面是上面例子的进一步加深,结合annotation

1.annotation类  Exetable.java

package test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//加载在VM中,在运行时进行映射
@Retention(RetentionPolicy.RUNTIME)
//限定此annotation只能标示方法
@Target(ElementType.METHOD)
public @interface Exetable {
	String value();
}

2. 接口类 UseJavaProxy.java

package test;

public interface UseJavaProxy {
	@Exetable("true")
	public void theCloseMethod();
}

3. 实现测试类 UseJavaProxyImpl.java

package test;

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

public class UseJavaProxyImpl implements UseJavaProxy {
	
	public void theCloseMethod() {
		System.out.println("the close method is in process");
	}

	public static void main(String[] args) {
		//得到接口声明的方法
		UseJavaProxy useJavaProxy = (UseJavaProxy) Proxy.newProxyInstance(UseJavaProxyImpl.class.getClassLoader(),
				UseJavaProxyImpl.class.getInterfaces(),
				new InvocationHandler(){
			
			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
				System.out.println("before--------"+method.getName());
				//执行真正的方法
				if(method.isAnnotationPresent(Exetable.class)) {
					//当然我们的 Exetable 完全可以不定义 String value(); 语句
					//这样我们简单的判断一下执行方法是否被标记修饰就可以了,有的话,我们可以
					//得到更多的信息,来分支判断,如我们完全可以把 标志值作为判断条件来决定
					//是否执行一个方法,以及执行该方法的前后要做什么
					String annotationValue = method.getAnnotation(Exetable.class).value();
					System.out.println("the annotation value is " + annotationValue);
				    method.invoke(new UseJavaProxyImpl(),args);
				}
				System.out.println("after--------"+method.getName() + "\n");
				return null;
			}
			
		});
		
		//测试
		useJavaProxy.theCloseMethod();
	}

}

 

 

OpenCV-Python图形图像处理:自用的一些工具函数源代码 本文为《OpenCV-Python图形图像处理:博主自用的一些工具函数功能及调用语法介绍》内容配套函数的源代码。 阅读详情

相关推荐

MiniMax H3本地部署实战:ComfyUI整合包安装与提速插件验证指南

在AIGC工具链快速演进的当下,本地部署内容生成模型成为许多创作者和开发者的关注焦点。本地部署意味着数据不出本机、可按需定制工作流,还能规避云端排队与外部依赖,其核心价值在于为内容生产提供可控、私密且可编程的生成环境。ComfyUI作为模块化节点式AI绘画工具,凭借灵活的工作流编排和API接口能力,成为承载这类模型的热门平台。MiniMax H3作为支持文本、参考图等多种输入的内容生成模型,与ComfyUI结合后,既适合个人进行概念验证,也能用于团队私有化流程搭建。实际落地过程中,中文整合包显著降低了环境配

weixin_29042035的博客 296

Day27-基础加强(注解Annotation、动态代理)

注解Annotation注解概述:

jjizh的博客 602

海康VisionMaster表面缺陷滤波实战:从参数调优到工业检测避坑指南

本文深入探讨海康VisionMaster表面缺陷滤波技术在工业检测中的应用,从参数调优到ROI绘制与Blob分析的协同策略,提供金属外壳、锂电池铝壳等复杂表面的缺陷检测实战指南。通过多级滤波架构和动态ROI生成法,显著提升检出率至98.7%,误检率低于0.5%,为工业质检提供智能化解决方案。

ujm5678901的博客 328

AOP代理类中调用带有annotation的私有方法

public class Aservice { private void  methodA() { methodB(); } @annotation private void methodB(){ } } 上面在调用B()方法时是调用不到的,修改为 aservice.methodB();

u011393781的博客 3333

ATE自动化测试设备:硬件与软件的完美协同

本文深入解析了ATE自动化测试设备如何通过硬件与软件的完美协同,实现高效、精准的电子产品测试。文章详细阐述了ATE系统的硬件架构(如测试控制器、仪器模块、开关矩阵)与软件层次(如测试管理、仪器控制、数据分析),并结合实战案例,揭示了软硬件协同设计在提升测试效率与可靠性中的关键作用。

weixin_29218509的博客 168

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2174

java annotation详解_Java注解Annotation详解

从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。Annotation提供了一种为程序元素(包、类、构造器、方法...

weixin_42525343的博客 5857

Transformer 面试题及详细答案120道(1-10)-- 基础概念

本文总结了Transformer模型的10个常见面试问题及答案,涵盖了其核心结构、创新点、工作机制等关键知识点。主要内容包括:Transformer的自注意力机制和多头注意力机制创新点,相比RNN/CNN的优势,模型在《Attention Is All You Need》论文中的提出背景,以及Encoder-Decoder协同工作流程等。重点解析了位置编码的作用、长距离依赖处理能力、与传统注意力机制的区别等核心问题。每个问题都给出了简明扼要的专业解答,适合作为Transformer相关面试准备的参考资料。

大剑师兰特的GIS世界 849

java中Annotation详解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。主要作用:Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。如代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 Java ...

程序员的博客 2142

扣子Coze工作流教程:采集公众号爆文,一键仿写自动发布

通过本教程,你学会了如何利用扣子(Coze)平台构建一个完整的公众号文章自动处理工作流。这个系统不仅能够大幅提升内容产出效率,还能通过AI二创保持内容新鲜度和原创性。最佳实践建议:初次使用时,建议先保存为草稿而不是直接发布,以便人工审核;从简单的工作流开始,逐步增加复杂度;定期检查工作流运行日志,优化节点配置。自动化内容创作是新媒体运营的未来趋势,掌握这项技能将使你在数字内容领域占据显著优势。

互联网架构师笔记 1238

EXCEL VBA从入门到精通 前言

本书通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程,同时也介绍了常用的工具、资源、社区和协作平台等,方便读者进行进一步的学习和开发。我强烈推荐这本书给所有希望学习和掌握Excel VBA编程的读者。多样化的资源和工具介绍:本书介绍了丰富的工具和资源,包括官方文档、在线教程、代码库、论坛、博客等,方便读者进行进一步的学习和开发。详细的讲解和丰富的示例:本书从语法和对象开始讲解,通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程。第一节:什么是VBA 5。

1729

java annotation应用_Java Annotation 高级应用

前言:前不久在matrix上先后发表了《java annotation 入门》、《java annotation 手册》两篇文章,比较全面的对java annotation的语法、原理、使用三方面进行了阐述。由于《入门》中的简单例程虽然简单明了的说明了annotation用法,但给大家的感觉可能是意犹未见,所以在此行文《java annotation高级应用》,具体实例化解释annotation和...

weixin_39914243的博客 241

PX4从放弃到精通(五):PX4中的姿态表示方法及转换关系

文章目录机体坐标系与地理坐标系一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 机体坐标系与地理坐标系 在实际应用中,加速度计的测量轴是由运动平台安装固定此器件的轴向决定的。这些坐标轴就形成了载体坐标系,定义如下: 坐标原点设在载体质心(这样可简化运动方程的推导); y轴指向载体前方,称为横滚轴,横滚角以y轴为起始旋转轴而得到,符合右手定则; x轴与y轴夹角90°,指向载体横向,称为俯仰轴,俯仰角以x轴为起始旋转轴而得到,符合右手定则; z轴与x轴、y轴构成右手笛卡儿坐标系,指向载体垂直方向

超维空间科技的博客 8114

Java Annotation高级应用

版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig) 原文:http://www.matrix.org.cn/re

GrayDay 681

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java Annotation Processing 概述

文章目录

O_o 3370

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java_反射与Annotation

在java.lang.reflect.AccessibleObject(java.lang.Class)类中提供有如下与Annotation有关的方法: 取得全部Annotation: public Annotation[] getAnnotations() 取得指定的Annotation: public T getAnnotation (Class annotationClass...

tt 博客 312

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java的注解Annotation应用

记录:482 场景:Java的注解Annotation应用,包括但不限于注解作用在类上、注解作用在字段上、注解作用在构造函数上、注解作用在方法上、注解作用在方法形式参数上、注解作用在方法的返回参数上,一个注解作用在多个场景上。

zhangbeizhen18的博客 727

Java学习总结——Annotation

贰拾壹——给编译器看的注解 Annotation( 注解 )功能建立在反射机制之上,通过这个功能可对程序进行注释操作。 一、Annotation 的含义 Annotation( 中文翻译为 “ 注解 ”,或 “ 注释 ” )实际上表示的是一种注释的语法,这种注释和代码的注释是不一样的,代码的注释( 如单行注释用双斜杠 “ // ”,多行注释用 “ /*...*/ 等 ” )是给程序员看的,其...

原来是松松呀~ 745

java annotation 必须_Java Annotation 必须掌握的特性

什么是Annotation?Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息。Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互,但其他组件可以使用这些信息。Annotation信息可以被编译进class文件,也可以保留在Java 虚拟机中,从而在运行时可以获取。甚至对于Annotation本身也可以加Annotation。那些...

weixin_31129503的博客 86

java annotation 必须_Java 注释 Annotation

从JDK 5开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注释)。Annotation提供了一种为程序元素设置元数据的方法,从某些方面来看,Annotation就想修饰符一样,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被存储在Annotation的”name = value”对中Annotation是一个接口,程序可以通过反射来获...

weixin_42561910的博客 274

java annotation 作用_Java关于Annotation详解

Annotation的架构图:可以看出:(01) 1个Annotation 和 1个RetentionPolicy关联。可以理解为:每1个Annotation对象,都会有唯一的RetentionPolicy属性。(02) 1个Annotation 和 1~n个ElementType关联。可以理解为:对于每1个Annotation对象,可以有若干个ElementType属性。(03) Annotat...

weixin_29333353的博客 913

java annotation 必须_Java Annotation-必须掌握的特性

什么是Annotation?Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息。Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互,但其他组件可以使用这些信息。Annotation信息可以被编译进class文件,也可以保留在Java 虚拟机中,从而在运行时可以获取。甚至对于Annotation本身也可以加Annotation。那些...

weixin_39956110的博客 95

java annotation list_Java中Annotation用法

AnnotationAnnotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Annotation提供了一条为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符...

weixin_35292208的博客 397

Annotation

java中Annotation的详细用法

TumblerAh的博客 888

java annotation 属性_java annotation 获取属性

自定义Annotation1.声明一个annotation,类型是@interface//声明注解@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interfaceValueBind {enumfieIdType {STRING, INT};fieIdType type()default...

weixin_28339527的博客 803

java annotation应用_Java Annotation高级应用

前言:在此行文《java annotation高级应用》,具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。一、摘要:《java annotation高级应用》具体实例化解释annotation和annotation processing tool(APT)的使用。望能对各位的有所帮助。本文列举了用于演示annotati...

weixin_39999586的博客 152
上一篇: 年轻人,你会包粽子吗
下一篇: 给textarea加横向滚动条
zhyt710
博客等级 码龄19年 1粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值