<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 閱讀(5471) 評論(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
    主站蜘蛛池模板: 久久久久亚洲av成人无码电影| 亚洲成AV人影片在线观看| 亚洲日本成本人观看| 中文字幕视频免费| 亚洲女同成av人片在线观看| 男女猛烈激情xx00免费视频| 免费看美女被靠到爽| 亚洲一区二区三区在线| 国产桃色在线成免费视频 | 亚洲成aⅴ人在线观看| 久久不见久久见免费视频7| 亚洲一区二区三区成人网站 | 成人免费视频软件网站| 亚洲人成人网毛片在线播放| 在线观看视频免费完整版| 色偷偷女男人的天堂亚洲网| 手机在线毛片免费播放| 久久国产福利免费| 国产亚洲精品美女久久久| 国精产品一区一区三区免费视频| 国产精品V亚洲精品V日韩精品| 亚洲免费在线观看| 国产成人精品日本亚洲| 永久在线免费观看| 亚洲国产精品张柏芝在线观看 | 亚洲国产第一站精品蜜芽| 永久免费bbbbbb视频| 在线人成精品免费视频| 国产日韩在线视频免费播放| 亚洲人成网站999久久久综合| 亚洲AV本道一区二区三区四区| 国产在线jyzzjyzz免费麻豆| 精品国产成人亚洲午夜福利| 亚洲成a人片在线观看日本| 免费人妻无码不卡中文字幕18禁| 欧亚一级毛片免费看| 亚洲中文无码mv| 亚洲大片免费观看| 亚洲AV无码乱码国产麻豆穿越| 91网站免费观看| 十八禁无码免费网站|