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 閱讀(5465) 評論(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
          主站蜘蛛池模板: 嫩江县| 白河县| 报价| 梅河口市| 京山县| 阜新| 岗巴县| 民丰县| 资中县| 喜德县| 峨眉山市| 黄冈市| 怀仁县| 云南省| 旌德县| 大同县| 仁布县| 富阳市| 米脂县| 邳州市| 沧源| 广饶县| 黄龙县| 鲜城| 兰西县| 宁远县| 南澳县| 湾仔区| 宣化县| 扶沟县| 资源县| 平舆县| 枣阳市| 玉山县| 玉溪市| 扶沟县| 双城市| 乌什县| 枣阳市| 香港| 永胜县|