<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. 編寫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控制 樹(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()",可以這么寫
    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
    主站蜘蛛池模板: 久久久亚洲精品蜜桃臀| 亚洲AV无码一区二区三区在线观看| 久久久久免费看黄A片APP| 欧美三级在线电影免费| 日韩免费电影在线观看| 亚洲国产高清在线一区二区三区 | 永久免费毛片手机版在线看| 亚洲高清成人一区二区三区| 亚洲熟妇无码八AV在线播放 | 亚洲国产精品丝袜在线观看| 亚洲色欲久久久综合网| 亚洲AV乱码一区二区三区林ゆな| 亚洲国色天香视频| 色欲aⅴ亚洲情无码AV| 香蕉免费在线视频| 久久www免费人成看片| 国产成人免费手机在线观看视频| 亚洲熟妇中文字幕五十中出| 亚洲一级片在线播放| 免费国产va在线观看| 久久久久国产精品免费免费不卡| 蜜桃视频在线观看免费网址入口| 亚洲?V乱码久久精品蜜桃| 亚洲AV无码国产精品色午友在线| 国产日本亚洲一区二区三区| 国产99久久久国产精免费| 3d动漫精品啪啪一区二区免费| 免费看美女让人桶尿口| 亚洲国产精品无码久久SM| 亚洲va久久久久| a级毛片免费观看视频| 性盈盈影院免费视频观看在线一区| 亚洲综合色自拍一区| 中文无码亚洲精品字幕| 国产真人无码作爱视频免费 | 一级毛片全部免费播放| 国产在线不卡免费播放| 少妇中文字幕乱码亚洲影视| 美女黄频视频大全免费的| 在线观看免费av网站| 久久亚洲色一区二区三区|