<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vjame

    優化代碼是無止境的
    隨筆 - 65, 文章 - 9, 評論 - 26, 引用 - 0
    數據加載中……

    Spring AOP控制日志管理

    1. 編寫po類 LogInfo
    package com.strongit.credit.manager.log.po;

    /**
     * LogInfo generated by MyEclipse Persistence Tools
     
    */

    public class LogInfo implements java.io.Serializable {

        
    // Fields

        
    /**
         * 
         
    */
        
    private static final long serialVersionUID = 1L;

        
    private Long logId;

        
    private String logUserName;

        
    private String logOrgName;

        
    private String logContent;

        
    private String logIp;

        
    private String remark;

        
    private String logDate;

        
    private String logOrgId;

        
    // Constructors

        
    /** default constructor */
        
    public LogInfo() {
        }

        
    /** full constructor */
        
    public LogInfo(String logUserName, String logOrgName, String logContent,
                String logIp, String remark, String logDate, String logOrgId) {
            
    this.logUserName = logUserName;
            
    this.logOrgName = logOrgName;
            
    this.logContent = logContent;
            
    this.logIp = logIp;
            
    this.remark = remark;
            
    this.logDate = logDate;
            
    this.logOrgId = logOrgId;
        }

        
    // Property accessors

        
    public Long getLogId() {
            
    return this.logId;
        }

        
    public void setLogId(Long logId) {
            
    this.logId = logId;
        }

        
    public String getLogUserName() {
            
    return this.logUserName;
        }

        
    public void setLogUserName(String logUserName) {
            
    this.logUserName = logUserName;
        }

        
    public String getLogOrgName() {
            
    return this.logOrgName;
        }

        
    public void setLogOrgName(String logOrgName) {
            
    this.logOrgName = logOrgName;
        }

        
    public String getLogContent() {
            
    return this.logContent;
        }

        
    public void setLogContent(String logContent) {
            
    this.logContent = logContent;
        }

        
    public String getLogIp() {
            
    return this.logIp;
        }

        
    public void setLogIp(String logIp) {
            
    this.logIp = logIp;
        }

        
    public String getRemark() {
            
    return this.remark;
        }

        
    public void setRemark(String remark) {
            
    this.remark = remark;
        }

        
    public String getLogDate() {
            
    return this.logDate;
        }

        
    public void setLogDate(String logDate) {
            
    this.logDate = logDate;
        }

        
    public String getLogOrgId() {
            
    return this.logOrgId;
        }

        
    public void setLogOrgId(String logOrgId) {
            
    this.logOrgId = logOrgId;
        }

    }

    2. 編寫action  class LogManage
    package com.strongit.credit.manager.log.action;

    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import com.strongit.credit.manager.log.po.LogInfo;

    /**
     * 
     * 
    @author lanjh
     * @ 2008-10-20  上午10:18:04
     *
     
    */
    public class LogManage extends HibernateDaoSupport {
        
    /**
         * 保存日志信息
         * 
    @param joinpoint
         * 
    @return
         
    */
        
    public boolean getLog(final LogInfo logInfo) {
            
    boolean flag = false;
            LogInfo logInfo 
    = null;
            
    try {
          
          this.getHibernateTemplate().save(logInfo);
                
    this.getHibernateTemplate().flush();
                flag 
    = true;
            } 
    catch (Exception e) {
                flag 
    = false;
                e.printStackTrace();
            }
            
    return flag;
        }
    }


    3 . spring 配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xmlns:tx
    ="http://www.springframework.org/schema/tx"
        xmlns:jee
    ="http://www.springframework.org/schema/jee"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"
    >
        
        
    <!-- AOP控制 角色管理 日志管理 -->
        
    <bean id="log" class="com.strongit.credit.manager.log.action.LogManage">
            
    <property name="sessionFactory">
                
    <ref bean="sessionFactory"/>
            
    </property>
        
    </bean>    
        
        
    <!-- AOP控制 樹形管理 -->
        
    <!-- 增加-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="treeInsertMethods" expression="execution(* com.strongit.credit.manager.treemanager.service.*.add*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="treeInsertMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 編輯 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="treeUpdateMethods" expression="execution(* com.strongit.credit.manager.treemanager.service.*.update*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="treeUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="treeDeleteMethods" expression="execution(* com.strongit.credit.manager.treemanager.service.*.delete*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="treeDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
    <!-- AOP控制 信息管理模塊 -->
        
    <!-- 增加-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="infoInsertMethods" expression="execution(* com.strongit.credit.manager.infomanager.service.*.insert*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="infoInsertMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 編輯 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="infoUpdateMethods" expression="execution(* com.strongit.credit.manager.infomanager.service.*.update*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="infoUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="infoDeleteMethods" expression="execution(* com.strongit.credit.manager.infomanager.service.*.delete*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="infoDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 審核與消審 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="infoIsauditMethods" expression="execution(* com.strongit.credit.manager.infomanager.service.*.isaudit(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="infoIsauditMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
    <!-- AOP控制 意見建議模塊 -->
        
    <!-- 回復 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="recommandUpdateMethods" expression="execution(* com.strongit.credit.manager.recommandmanager.service.*.update*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="recommandUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="recommandDeleteMethods" expression="execution(* com.strongit.credit.manager.recommandmanager.service.*.delete*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="recommandDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 審核與消審 -->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="recommandIsauditMethods" expression="execution(* com.strongit.credit.manager.recommandmanager.service.*.isaudit*(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="recommandIsauditMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
        
    <!-- AOP控制 企業賬號管理 -->
        
    <!-- 增加-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="memberInsertMethods" expression="execution(* com.strongit.credit.manager.membermanager.service.*.save(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="memberInsertMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="memberDeleteMethods" expression="execution(* com.strongit.credit.manager.membermanager.service.*.delete(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="memberDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 修改-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="memberUpdateMethods" expression="execution(* com.strongit.credit.manager.membermanager.service.*.update(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="memberUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
    <!-- AOP控制 個人賬號管理 -->
        
    <!-- 增加-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="personalInsertMethods" expression="execution(* com.strongit.credit.manager.personalmanager.service.*.save(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="personalInsertMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="personalDeleteMethods" expression="execution(* com.strongit.credit.manager.personalmanager.service.*.delete(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="personalDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 更新-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="personalUpdateMethods" expression="execution(* com.strongit.credit.manager.personalmanager.service.*.update(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="personalUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
        
    <!-- AOP控制 投票主題管理 -->
        
    <!-- 增加-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="themeInsertMethods" expression="execution(* com.strongit.credit.manager.poll.service.*.save(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="themeInsertMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 刪除-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="themeDeleteMethods" expression="execution(* com.strongit.credit.manager.poll.service.*.del(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="themeDeleteMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
    <!-- 更新-->
        
    <aop:config>
            
    <aop:aspect ref="log">
                
    <aop:pointcut id="themeUpdateMethods" expression="execution(* com.strongit.credit.manager.poll.service.*.isaudit(..))"/>
                
    <aop:after-returning method="getLog" pointcut-ref="themeUpdateMethods" returning="retVal"/>
            
    </aop:aspect>
        
    </aop:config>
        
        
    </beans>


    4 . gg

    5、no gg,,,go on 。 by lanjh  2011.9.8

    另外還可以采用一種方式

       
    /**
         * <aop:config>
            <aop:aspect ref="log">
                <aop:pointcut id="AllCreateMethods" expression="execution(* com.strongit..service.*.create*(..))"/>
                <aop:around method="recordLog1"  pointcut-ref="AllCreateMethods"/>
            </aop:aspect>
        </aop:config>
         * 
    @param logInfo
         
    */
        
    public void recordLog1(final ProceedingJoinPoint joinpoint) {

            
    try {
            
    this.getHibernateTemplate().execute(new HibernateCallback() {
                
    public Object doInHibernate(Session session)
                        
    throws HibernateException, SQLException {
                    
    try {
                        session.save((StrongLogInfo) joinpoint.proceed());
                    } 
    catch (Throwable e) {
                        
    // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    session.flush();
                    
    return null;
                }
            });
        } 
    catch (Exception e) {
            e.printStackTrace();
        }

    posted on 2008-11-12 21:07 lanjh 閱讀(5464) 評論(5)  編輯  收藏 所屬分類: Java Web

    評論

    # re: Spring AOP控制日志管理  回復  更多評論   

    太繁瑣了,expression="execution(),expression=execution()",可以這么寫
    2009-02-23 17:48 | hbz-bj

    # re: Spring AOP控制日志管理[未登錄]  回復  更多評論   

    哥們,你真的可以啟動你的服務器嗎?
    ProceedingJoinPoint只能在Around Advice中使用,你給出的全是after-returning Advice。。。
    2009-03-11 16:54 | Arthur

    # re: Spring AOP控制日志管理  回復  更多評論   

    @hbz-bj
    這樣也可以么? 太好了
    2011-04-30 22:47 | qql

    # re: Spring AOP控制日志管理[未登錄]  回復  更多評論   

    可以把ProceedingJoinPoint換成JoinPoint@Arthur
    2011-08-17 17:09 | Leon

    # re: Spring AOP控制日志管理  回復  更多評論   

    沒看明白 日志實體是怎么被賦值的
    2011-10-17 16:06 | wunan
    主站蜘蛛池模板: 高潮毛片无遮挡高清免费 | 亚洲第一区视频在线观看| 在线a级毛片免费视频| 黄色一级毛片免费看| 久久久久久a亚洲欧洲aⅴ| 成年在线网站免费观看无广告 | 动漫黄网站免费永久在线观看| 亚洲av无码日韩av无码网站冲| 亚洲精品~无码抽插| 无码日韩人妻av一区免费| 一日本道a高清免费播放| 亚洲美女免费视频| 亚洲日本一区二区三区在线不卡| 无码日韩精品一区二区免费暖暖 | 亚洲国产人成中文幕一级二级| 久久精品人成免费| 免费看一级毛片在线观看精品视频 | 免费理论片51人人看电影| 成全视频在线观看免费| 国产精品亚洲一区二区在线观看| 亚洲AV第一页国产精品| 亚洲精品在线视频| 日本特黄特色aa大片免费| 久久久久成人精品免费播放动漫| 黄页网站在线视频免费| 33333在线亚洲| 91情国产l精品国产亚洲区| 亚洲综合色区在线观看| 精品久久久久久久免费人妻| 蜜桃视频在线观看免费视频网站WWW| 直接进入免费看黄的网站| 亚洲人成影院77777| 亚洲VA中文字幕无码一二三区| 免费中文字幕一级毛片| 四虎在线视频免费观看| 国产免费一区二区三区| 免费国产成人午夜在线观看| jizz免费在线观看| 羞羞网站免费观看| 亚洲av无码一区二区三区四区| 亚洲国产精品综合久久网各|