Java的反射和代理以及注解
最近接触到java的反射和代理(接触的有点迟了。。。),还是有必要总结下
1. Java的反射
有的时候我们需要在程序运行的时候获取类、方法等信息用于动态运行,这个时候反射就能够帮我们找到类、方法、成员变量
关于反射的原理,java运行时会把类加载到。。。所以运行时可通过反射机制,取到这些信息。spring等框架使用的就是反射代理的机制。
2. Java代理
我理解的代理就是对一个已经存在的类或者方法进行二次封装,比如日志记录,或者做其他的操作,尝到甜头了,真的是非常好用啊!
package com.fxl.test; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method; public class TestProxy{ public static void main(String[] args) throws Throwable { MyProxy pro = new TestProxy().new MyProxy(new TestProxy()); Class c = Class.forName("com.staryea.strategy.test.TestProxy"); Method method = c.getMethod("add", new Class[]{Integer.class,Integer.class}); Object o = pro.invoke(c, method, new Integer[]{2,3});
System.out.println(o);
} public int add(Integer a, Integer b){ return a+b; } class MyProxy implements InvocationHandler{ private Object obj; public MyProxy(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("调用方法--->"+method.getName()); Object result = method.invoke(obj, args);
System.out.println("result--->"+result);
return result;
}
} }
JAVA----自定义注解
关于java的注解,最近好像明白了一些。咋说呢,注解这个小东西还是得和java的反射一起玩儿,不然不起作用,哈哈,注解这个弱受。但是注解这玩意儿还是蛮强大的。
注解可以是类的注解、方法的注解、属性的注解。我的理解就是类、方法、属性的属性,不知道我理解的对不对。
注解的使用(先列个提纲,明天再写,领导在旁边,哈哈):
1. 注解编写。。。
2. 调用。。。
3. 其他
Java的反射和代理以及注解的更多相关文章
- 利用Java的反射与代理机制实现AOP
在上一篇文章中,我们讲述了利用Java的反射机制中实现Spring中的IOC,在本文中,我们将更进一步,讲述用Java的反射和动态代理机制来实现Spring的AOP. 一.AOP概述 AOP(Aspe ...
- Java基础—反射与代理(新手向)
第1章 反射与代理 1.1 反射定义 一般情况下,需要一个功能的前提是遇到了某个问题,这里先列举一些问题,然后再通过反射是如何解决了这些问题,来引出反射的定义. 普通开发人员工作中最常见的问题:需要生 ...
- Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
IOC(Inverse of Control) 可翻译为“控制反转”,但大多数人都习惯将它称为“依赖注入”.在Spring中,通过IOC可以将实现类.参数信息等配置在其对应的配置文件中,那么当 需要更 ...
- 跟着刚哥梳理java知识点——反射和代理(十七)
反射机制是什么?反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有的属性和方法:对于任意一个对象,都能够调用他的一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- java 结合反射、泛型、注解获取泛型对象
由于自己也不是特别的理解,不能做过多的解释,因为这些是问过老师做出来的,我还没有学到这里.如果有解释错误的 指出来我改正一下.见谅~(如果学到这里了,会完善) 工具类(SQLUtil)核心代码: pa ...
- Java:反射与代理
Java世界的繁荣反射这一特性有很大功劳,可以获取全面的类型信息. /** * */ package ref; import java.lang.reflect.Field; import java. ...
- java通过反射获取bean字段注解@Column中的信息
直接上代码吧: Field field; Field[] fields=clas.getDeclaredFields(); for (int i = 0; i <fields.length ; ...
- java 反射 动态代理
在上一篇文章中介绍Java注解的时候,多次提到了Java的反射API.与javax.lang.model不同的是,通过反射API可以获取程序在运行时刻的内部结构.反射API中提供的动态代理也是非常强大 ...
- 【译】11. Java反射——动态代理
原文地址:http://tutorials.jenkov.com/java-reflection/dynamic-proxies.html 博主最近比较忙,争取每周翻译四篇.等不急的请移步原文网页. ...
随机推荐
- [转]Outlook HTML渲染
转自:http://www.cnblogs.com/dolphinX/p/4081828.html 是不是很讨厌为Email代码兼容Outlook? 太遗憾了!虽然光都有尽头,但Outlook始终存在 ...
- Docker 1
1.Docker安装 下载地址:https://download.docker.com/mac/edge/Docker.dmg 验证Docker信息 docker --version docker-c ...
- H-Index II @python
Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimize ...
- API网关Kong系列(四)认证配置
目前根据业务需要先介绍2种认证插件:Key Authentication 及 HMAC-SHA1 认证 Key Authentication 向API添加密钥身份验证(也称为API密钥). 然后,消 ...
- c++官方文档-动态内存
#include<iostream> #include <new> using namespace std; int main() { /** * 动态内存 * url: ht ...
- 不常用的容易忘记常见mysql操作数据表命令
删除外键关联的约束 alter table tablename drop foreign key keyname;
- OpenCL 归约 1
▶ 照着书上的代码,写了几个一步归约的计算,只计算一步,将原数组归约到不超过 1024 个工作项 ● 代码 // kernel.cl __kernel void reduce01(__global u ...
- mysql 忽略某个错误 继续执行
执行如下存储过程: CREATE PROCEDURE `aa`()BEGINcall RealtimeData_9035();call RealtimeData_9504();call Realti ...
- VisualSVN:强制必须填写日志信息
上回将到怎么修改已提交的版本日志信息,而开发项目过程中团队中总是有人忘记添加日志信息注释直接提交,这样会后期维护带来不便. 现在先演示一下效果 当直接提交一个空白日志信息时 有填写日志信息时 那怎么实 ...
- 奇技淫巧:在spring官网上下载历史版本的spring插件,springsource-tool-suite
转自:https://blog.csdn.net/PacosonSWJTU/article/details/80959689 目前spring官网(http://spring.io/tools/sts ...