项目介绍:
IDCM:Internet Data center monitoring 网络数据中心监控平台
IRP:Information Resource planing 信息资源规划
1.设置表中公共字段
在业务逻辑的表中,都有五个公共字段,如下:
`gmt_create` datetime NOT NULL COMMENT '数据新增时间',
`creator` varchar(128) NOT NULL DEFAULT '0' COMMENT '创建者',
`gmt_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据修改时间',
`modifier` varchar(128) NOT NULL DEFAULT '0' COMMENT '修改者',
`is_deleted` char(1) NOT NULL DEFAULT 'n' COMMENT '是否逻辑删除,默认为n',
在常见的增删改查操作中,需要对表中的五个字段赋值。而添加每个实体类的时候,都有相同的方法,因此,我们将这些公共的部分提取出来,构造了CommonUtil.java类,如下:
package com.alibaba.tboss.common.auth.common; import java.lang.reflect.Method; import java.util.Date; import org.apache.commons.lang.StringUtils; import com.alibaba.tboss.common.auth.exception.AppAuthCommonException; import com.alibaba.tboss.common.auth.privilege.PrivilegeInfo; public class CommonUtil { private static String SET_CREATOR = "setCreator"; private static String SET_MODIFIER = "setModifier"; private static String SET_GMTCREATE = "setGmtCreate"; private static String SET_GMTMODIFIED = "setGmtModified"; private static String SET_ISDELETED = "setIsDeleted"; public static void setCommonValueForCreate(Object pojo, PrivilegeInfo privilegeInfo) { try { Method setCreator = pojo.getClass().getMethod(SET_CREATOR, String.class); setCreator.invoke(pojo, getOperator(privilegeInfo)); Method setModifier = pojo.getClass().getMethod(SET_MODIFIER, String.class); setModifier.invoke(pojo, getOperator(privilegeInfo)); Method setGmtCreate = pojo.getClass().getMethod(SET_GMTCREATE, Date.class); setGmtCreate.invoke(pojo, new Date()); Method setGmtModified = pojo.getClass().getMethod(SET_GMTMODIFIED, Date.class); setGmtModified.invoke(pojo, new Date()); Method setIsDeleted = pojo.getClass().getMethod(SET_ISDELETED, String.class); setIsDeleted.invoke(pojo, "n"); } catch (Exception e) { throw new AppAuthCommonException("invoke method error ", e); } } public static String getOperator(PrivilegeInfo pvgInfo) { if (pvgInfo == null || StringUtils.isEmpty(pvgInfo.getWorkNo())) { return "SYSTEM"; } else { return pvgInfo.getWorkNo(); } } }
CommonUtil.setCommonValueForCreate(bean,privilegeInfo);由于当前类中的方法是静态方法,所以,我们在业务逻辑代码中可以直接用类名来调用静态方法.Java反射的使用.
2.<aop:scoped-proxy/>配置的解释
首先,xml中的标签<bean>、<property>、<map>、<entry>、<beans>是如何被解析的,参考xml基础教程:
http://www.w3school.com.cn/x.asp
其次,bean的scope属性取值:singleton、prototype、request、session、globalsession。
System.out.println(System.identityHashCode(s1));