java反射机制简单应用
来源:互联网 发布:云计算专业调研报告 编辑:程序博客网 时间:2024/05/14 14:04
在学习java的时候,学过反射机制,但是真正用到的机会很少。
两年中也就用到两次
1.给第三方提供接口,每个接口都需要统计响应时间
2.Map和Bean的转化
统计响应时间 大致思路如下
1.给用户提供统一接口,将具体方法和参数放到post的参数中,传过来。
2.服务器响应后,记录当前时间。
3.判断方法参数是否存在
3.利用映射得到接口方法类,然后将method和parameter传进去
4.得到相应结果
5.记录结束时间
6.返回结果给用户
部分代码
@ResponseBody @RequestMapping(value = "/api", method = {RequestMethod.GET, RequestMethod.POST}) public Map<String, Object> api(HttpServletRequest request) { long startTime = System.currentTimeMillis(); long totalTime=0; Map<String, Object> resultMap = new HashMap<String, Object>(); String method = request.getParameter("method"); if (method == null || method.isEmpty()) { ; } else { try { Class<?> c = Class.forName("com.Api"); Map<String, Object> invokeMap = (Map<String, Object>) c.getMethod(method, HttpServletRequest.class, Map.class).invoke(c.newInstance(), new Object[]{request}); } catch (NoSuchMethodException e) { } totalTime= System.currentTimeMillis()-startTime; return resultMap; } totalTime= System.currentTimeMillis()-startTime; return resultMap; }
Map和Bean的转化,代码如下(复杂的类会报空指针错误)
public class BeanUtil { public static Map<String,Object> transBean2Map(Object obj){ if(obj==null){ return null; } Map<String,Object> map=new HashMap<String,Object>(); try{ BeanInfo beanInfo= Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors(); for(PropertyDescriptor propertyDescriptor:propertyDescriptors){ String key=propertyDescriptor.getName(); if(!key.equals("class")){ Method method=propertyDescriptor.getReadMethod(); if(method!=null){ Object value=method.invoke(obj); map.put(key,value); } } } }catch (Exception e){ e.printStackTrace(); } return map; } public static void transMap2Bean(Map<String,Object>map,Object obj){ try{ BeanInfo beanInfo=Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors(); for(PropertyDescriptor propertyDescriptor:propertyDescriptors){ String key=propertyDescriptor.getName(); if(map.containsKey(key)){ Object value=map.get(key); Method method=propertyDescriptor.getWriteMethod(); method.invoke(obj,value); } } } catch (Exception e){ e.printStackTrace(); } }}
0 0
- java反射机制简单应用
- JAVA反射机制的简单应用
- JAVA反射机制的简单应用
- Java反射机制的简单应用
- Java反射机制的简单应用
- Java反射机制应用
- Java反射-简单应用
- JAVA反射机制的应用
- java反射机制的应用
- java反射机制应用场景
- Java反射机制与应用
- JAVA 应用 III - 反射机制
- java 反射机制及其应用
- Java反射机制及应用
- java反射机制的应用
- java反射机制应用例子
- java 反射机制的应用
- java中的反射机制应用
- css盒子模型创建网页布局
- JQuery选择器(一) 基本选择器
- struts2中数据校验
- 《C# 并发编程 · 经典实例》读书笔记
- mabatis有外键关联的情况下删除数据
- java反射机制简单应用
- VS2015 使用Mysql-connector/c++ 链接数据库(环境配置)
- ssh项目中strust2从2.0.11升级到2.3.15.1详细步骤
- 负载均衡算法
- Contiki中MAC层与RDC层
- 你真的完全理解二分查找了吗
- CallableAndFuture
- JS面向对像编程四—— prototype 对象
- JQuery选择器(二) 层次选择器