@Override public void setAttribute(AttributeConfigDO ac, Object value) { String key = ac.getKey(); // XXX 注意,这里调用了value上的toString(),而不是保存value对象本身 String v = value == null ? null : value.toString(); AttributeDO attribute = new AttributeDO(ac, v); attributes.put(key, attribute); dirty.add(key); // 标记修改 }
@Override public Object getAttribute(AttributeConfigDO ac) { String key = ac.getKey(); // 先从已解析中获取 AttributeDO attribute = attributes.get(key); if (attribute == null) { attribute = getAttributeFromCookies(ac); // 保存到已解析map attributes.put(key, attribute); } return attribute.getValue(); }