protected String createCacheKey(Object args[], Method method, Cache cacheAn) {
		String cacheKey = null;

		// 获取缓存KEY的前缀：cacheKeyPrefix
		String cacheKeyPrefix = cacheAn.cacheKeyPrefix();
		// 若cacheKeyPrefix不为空，将对该缓存做相应操作否则直接执行方法
		if (!Strings.isEmpty(cacheKeyPrefix)) {
			// 获取该方法欲读取的缓存的 KEY——将拼接方法注解中的cacheKeyPrefix及标有“CacheKeySuffix”注解的参数
			String[] cacheParaArr = new String[args.length];
			Annotation[][] ans = method.getParameterAnnotations();
			int k = 0;
			if (ans.length > 0) {
				for (int i = 0; i < ans.length; i++) {
					for (int j = 0; j < ans[i].length; j++) {
						if (ans[i][j].annotationType() == CacheKeySuffix.class) {
							if (args[i] == null) {
								cacheParaArr[k] = "";
							} else if (CharSequence.class.isAssignableFrom(args[i].getClass())) {
								cacheParaArr[k] = args[i].toString();
							} else {
								cacheParaArr[k] = JSON.toJSONString(args[i], SerializerFeature.UseSingleQuotes);
							}
							k++;
						}
					}
				}
			}
			cacheKey = CStrings.cacheKey(cacheKeyPrefix, cacheParaArr);
			logger.debug("Cache key : " + cacheKey);
		} else {
			logger.warn("cacheKeyPrefix is empty!");
		}

		return cacheKey;
	}