为爱奔跑


无论在家出家。必须上敬下和。忍人所不能忍。行人所不能行。代人之劳。成人之美。静坐长思己过。闲谈不论人非。行住坐卧。穿衣吃饭。从幕至朝。一名佛号。不令间断。或小声念。或默念。除念佛外。不起别念。若或妄念一起。当下就要教他消灭。当生惭愧心及忏悔心。从有修持。总觉我工夫很浅。不自矜夸。只管自家。不管人家。只看好样子。不看坏样子。看一切人都是菩萨。唯我一人是凡夫!

项目介绍:

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));

 

posted on 2016-05-23 16:05  RunforLove  阅读(341)  评论(0编辑  收藏  举报