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

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

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

    vjame

    優(yōu)化代碼是無(wú)止境的
    隨筆 - 65, 文章 - 9, 評(píng)論 - 26, 引用 - 0
    數(shù)據(jù)加載中……

    Spring AOP控制日志管理

    1. 編寫(xiě)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. 編寫(xiě)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控制 樹(shù)形管理 -->
        
    <!-- 增加-->
        
    <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控制 意見(jiàn)建議模塊 -->
        
    <!-- 回復(fù) -->
        
    <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控制 企業(yè)賬號(hào)管理 -->
        
    <!-- 增加-->
        
    <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控制 個(gè)人賬號(hào)管理 -->
        
    <!-- 增加-->
        
    <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) 評(píng)論(5)  編輯  收藏 所屬分類: Java Web

    評(píng)論

    # re: Spring AOP控制日志管理  回復(fù)  更多評(píng)論   

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

    # re: Spring AOP控制日志管理[未登錄](méi)  回復(fù)  更多評(píng)論   

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

    # re: Spring AOP控制日志管理  回復(fù)  更多評(píng)論   

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

    # re: Spring AOP控制日志管理[未登錄](méi)  回復(fù)  更多評(píng)論   

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

    # re: Spring AOP控制日志管理  回復(fù)  更多評(píng)論   

    沒(méi)看明白 日志實(shí)體是怎么被賦值的
    2011-10-17 16:06 | wunan
    主站蜘蛛池模板: 国内精品乱码卡1卡2卡3免费| 日韩精品内射视频免费观看| 和老外3p爽粗大免费视频| 丁香花在线视频观看免费| 午夜视频免费在线观看| 一区二区亚洲精品精华液| 亚洲av日韩综合一区二区三区| 黄页网站在线视频免费| 免费无码一区二区三区蜜桃| 国产成人免费高清激情明星| 一级毛片免费播放| 国内免费高清在线观看| 亚洲第一页综合图片自拍| 久久精品国产亚洲| 亚洲a∨无码男人的天堂| 亚洲国产精品综合福利专区| 色九月亚洲综合网| 三年片在线观看免费西瓜视频| 91香蕉成人免费网站| 可以免费观看一级毛片黄a | 免费看的成人yellow视频| 亚洲精品无码专区久久同性男| 亚洲成AV人片在| 亚洲国产高清国产拍精品| 成人国产精品免费视频| 999国内精品永久免费视频| 亚洲国产日韩成人综合天堂 | 亚洲中文无码线在线观看| 美女视频免费看一区二区| 在线免费观看亚洲| 亚洲成av人片天堂网老年人 | 亚洲国产午夜精品理论片| 特级毛片aaaa级毛片免费| 97av免费视频| 亚洲精品天堂成人片?V在线播放| 亚洲色图综合网站| yellow免费网站| 成年人性生活免费视频| 亚洲国产精品自在在线观看| 高潮内射免费看片| 美女网站免费福利视频|