• IDCM项目学习笔记


    项目介绍:

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

  • 相关阅读:
    Cloudstack安装(二)
    Cloudstack介绍(一)
    [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据
    [Python爬虫] 之二十一:Selenium +phantomjs 利用 pyquery抓取36氪网站数据
    [Python爬虫] 之二十:Selenium +phantomjs 利用 pyquery通过搜狗搜索引擎数据
    [Python爬虫] 之十九:Selenium +phantomjs 利用 pyquery抓取超级TV网数据
    [Python爬虫] 之十八:Selenium +phantomjs 利用 pyquery抓取电视之家网数据
    [Python爬虫] 之十七:Selenium +phantomjs 利用 pyquery抓取梅花网数据
    pycharm2016序列号失效问题解决办法
    scrapy-splash抓取动态数据例子十六
  • 原文地址:https://www.cnblogs.com/RunForLove/p/5520349.html
Copyright © 2020-2023  润新知