zoukankan      html  css  js  c++  java
  • 【log】AOP配置日志

    直接代码

    QueryService.java接口

    public interface QueryService {
    
        TbDiseases getTbDiseasesById(int id) throws ServerException;
    
    }

    QueryServiceImpl实现

    public class QueryServiceImpl implements QueryService {
        
        @Autowired
        private TbDiseaseDao tbDiseaseDao;
    
        @Override
        public TbDiseases getTbDiseasesById(int id) throws ServerException {
            return  tbDiseaseDao.read(id);
        }    
    }

    ILogService.java接口

    public interface ILogService {
        
        public void log();
        
        public void logArg(JoinPoint point);
        /**
         * 有参和返回值的方法
         * @param point
         * @param returnObj
         */
        public void logArgAndReturn(JoinPoint point,Object returnObj);
    }

    LogServiceImpl实现

    public class LogServiceImpl implements ILogService {
        
        Logger logger = Logger.getLogger(LogServiceImpl.class);
    
        @Override
        public void log() {
            System.out.println("*************Log*******************");
        }
    
        @Override
        public void logArg(JoinPoint point) {
            //此方法返回的是一个数组,数组中包括request以及ActionCofig等类对象
            Object[] args = point.getArgs();
            String methodName = point.getSignature().getDeclaringTypeName();
            logger.info("Method:" + methodName + " " + point.getSignature().getName());
            String params = "";
            if (args != null) {
                for (Object obj : args) {
                    params += obj.toString() + ", ";
                }
            }
            logger.info("param size:" + args.length + " === " + params);
        }
    
        @Override
        public void logArgAndReturn(JoinPoint point, Object returnObj) {
            //此方法返回的是一个数组,数组中包括request以及ActionCofig等类对象
            logger.info("Result: " + returnObj);
        }
    
    }

    配置

    <bean id="queryService" class="org.ccnt.med.servimpl.QueryServiceImpl"/>
    <bean id="logService" class="org.ccnt.med.servimpl.LogServiceImpl"/>
    
    <!-- AOP log -->
        <aop:config>
            <aop:pointcut 
                expression="execution (* org.ccnt.med.servimpl.QueryServiceImpl.*(..))" 
                id="servicePointcut"/>
            <aop:aspect id="serviceAspect" ref="logService">
                <!--  <aop:before method="log" pointcut-ref="servicePointcut"/>-->
                <aop:after method="logArg" pointcut-ref="servicePointcut"/>
                <aop:after-returning method="logArgAndReturn" returning="returnObj" pointcut-ref="servicePointcut"/>
            </aop:aspect>
        </aop:config>
  • 相关阅读:
    反弹连接的shellcode
    md5反查网站
    一种新的Heap区溢出技术分析
    ckeditor漏洞
    Fedora Core 4下的一些小问题
    MYCCL特征码定位器详细使用之内存定位
    dedecms5.7最新注入和上传漏洞
    脱壳方法汇总
    一种小堆(heap)溢出的另类利用方法
    对付非法操作! 系统做了如下记录!
  • 原文地址:https://www.cnblogs.com/549294286/p/3019420.html
Copyright © 2011-2022 走看看