欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

注入工具類

張軍 2249 0
package zj.reflect.util;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;

import zj.reflect.bean.AutowiredBeanFormMap;
import zj.reflect.bean.AutowiredMapFormBean;

/**
 * 類名 :AutowiredUtil<br>
 * 概況 :注入工具類<br>
 * 
 * @version 1.00 (2014.09.15)
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://www.dlhighland.cn">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class AutowiredUtil implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 從Map注入Bean
	 * 
	 * @param objInstance
	 * @param map
	 */
	public static void setBeanFromMap(Map<String, Object> map, Object objInstance) throws Exception {
		if (map == null || objInstance == null) {
			throw new Exception("map或objInstance未賦值");
		} else {
			Map<Method, Object> methodsMap = MethodUtil.getMethodsMap(objInstance);
			for (Method method : methodsMap.keySet()) {
				// 取得方法上的注解
				if (method.isAnnotationPresent(AutowiredBeanFormMap.class)) {
					// 取得注解類
					AutowiredBeanFormMap ann = method.getAnnotation(AutowiredBeanFormMap.class);
					if (ann != null && (method.isAccessible() || Modifier.isPublic(method.getModifiers()))) {
						Object methodValue = null;
						// 如果有注解并且可訪問或者是公共方法
						// 獲取方法名
						String methodName = method.getName();
						// 獲取屬性的注解key
						String keyValue = ann.key();
						if (keyValue == null || keyValue.trim().equals("")) {
							// 如果方法以set開頭
							if (methodName.startsWith("set")) {
								if (methodName.length() > 3) {
									// 如果非set方法
									String fieldName = methodName.substring(3);
									// 獲取方法對應的屬性名
									fieldName = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
									// 根據屬性名獲取map中的值
									methodValue = map.get(fieldName);
									if (methodValue != null) {
										// 如果map中的值存在,則設置方法值
										MethodUtil.invoke(objInstance, methodName, new Class[] { methodValue.getClass() }, new Object[] { methodValue });
									}
								} else {
									// 如果是set方法
									// 獲取map中的值
									methodValue = map.get(methodName);
									if (methodValue != null) {
										// 如果map中的值存在,則設置方法值
										MethodUtil.invoke(objInstance, methodName, new Class[] { methodValue.getClass() }, new Object[] { methodValue });
									}
								}
							} else {
								// 獲取map中的值
								methodValue = map.get(methodName);
								if (methodValue != null) {
									// 如果map中的值存在,則設置方法值
									MethodUtil.invoke(objInstance, methodName, new Class[] { methodValue.getClass() }, new Object[] { methodValue });
								}
							}
						} else {
							// 如果注解的key存在
							// 根據注解的key獲取map中的值
							methodValue = map.get(keyValue);
							// 設置map中的值到類的方法中
							MethodUtil.invoke(objInstance, methodName, new Class[] { methodValue.getClass() }, new Object[] { methodValue });
						}
					}
				}
			}
			// 取得屬性值
			Map<Field, Object> fieldsMap = FieldUtil.getFieldsMap(objInstance, true);
			for (Field field : fieldsMap.keySet()) {
				// 取得屬性上的注解
				if (field.isAnnotationPresent(AutowiredBeanFormMap.class)) {
					// 取得注解類
					AutowiredBeanFormMap ann = field.getAnnotation(AutowiredBeanFormMap.class);
					if (ann != null) {
						// 獲取注解中的key
						String keyValue = ann.key();
						String fieldName = field.getName();
						if (keyValue == null || keyValue.trim().equals("")) {
							// 根據屬性名獲取map中的值
							FieldUtil.set(objInstance, fieldName, true, map.get(fieldName));
						} else {
							// 根據注解的key獲取map中的值
							FieldUtil.set(objInstance, fieldName, true, map.get(keyValue));
						}
					}
				}
			}
		}
	}

	/**
	 * 從Bean注入到Map
	 * 
	 * @param objInstance
	 * @param map
	 */
	public static Map<String, Object> getMapFromBean(Object objInstance) throws Exception {
		Map<String, Object> map = null;
		if (objInstance == null) {
			throw new Exception("objInstance未賦值");
		} else {
			map = new HashMap<String, Object>();
			Map<Method, Object> methodsMap = MethodUtil.getMethodsMap(objInstance);
			for (Method method : methodsMap.keySet()) {
				Object methodValue = methodsMap.get(method);
				// 取得方法上的注解
				if (method.isAnnotationPresent(AutowiredMapFormBean.class)) {
					// 取得方法上的注解
					AutowiredMapFormBean ann = method.getAnnotation(AutowiredMapFormBean.class);
					if (ann != null && Modifier.isPublic(method.getModifiers())) {
						// 如果注解存在
						String keyValue = ann.key();
						if (keyValue == null || keyValue.trim().equals("")) {
							String methodName = method.getName();
							if (methodName.startsWith("get")) {
								if (methodName.startsWith("get") && methodName.length() > 3) {
									String fieldName = methodName.substring(3);
									fieldName = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
									map.put(fieldName, methodValue);
								} else {
									map.put(methodName, methodValue);
								}
							} else {
								map.put(methodName, methodValue);
							}
						} else {
							map.put(keyValue, methodValue);
						}
					}
				}
			}
			Map<Field, Object> fieldsMap = FieldUtil.getFieldsMap(objInstance, true);
			for (Field field : fieldsMap.keySet()) {
				Object fieldValue = fieldsMap.get(field);
				if (field.isAnnotationPresent(AutowiredMapFormBean.class)) {
					AutowiredMapFormBean ann = field.getAnnotation(AutowiredMapFormBean.class);
					if (ann != null) {
						String keyValue = ann.key();
						if (keyValue == null || keyValue.trim().equals("")) {
							String fieldName = field.getName();
							map.put(fieldName, fieldValue);
						} else {
							map.put(keyValue, fieldValue);
						}
					}
				}
			}
		}
		return map;
	}
}



更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲成人av一区二区 | 九热在线 | 91精品久久久久久久 | 欧美特黄aaaaaaaa大片 | 日本精品一二三区 | 亚洲高清一区二区三区 | 日韩精品在线播放 | 亚洲品质自拍视频 | 日韩一区二区三区四区 | 亚洲国产成人va在线观看网址 | 久久99国产精品久久99无号码 | www.伊人.com| 亚州久久 | 亚洲一区二区久久 | 邪不压正免费观看完整高清视频 | 日韩一级在线 | 波多野一区 | 九九全国免费视频 | 中文一级毛片 | 婷婷丁香色综合图亚洲 | 国产伦精品一区二区三区高清 | 成人性生交大片 | 一区二区精品在线 | 免费jizz在线播放视频 | 刑事侦缉档案1 | 国产操片| 麻豆精品视频在线 | 国产黄色片网站 | 久草在线免费播放 | 欧美在线观看一区 | 黄色资源在线观看 | 精品综合在线 | 黄视频网站免费看 | 欧美aav | 亚洲成人一区二区 | 久久艹逼| 欧美一a一片一级一片 | 青青草最新网址 | 国产精品不卡一区 | 97日日| 亚洲经典激情春色另类 |