Spring3 aop aspectj 打印日志

Spring3 aop aspectj 打印日志

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"
default-lazy-init="true">

<!-- Activates scanning of @Service -->
<context:component-scan base-package="com.xiu.search.core">
<context:include-filter type="regex" expression=".util"/>
</context:component-scan>
<!--
<bean id="logInteceptor" class="com.xiu.search.web.util.LogInteceptor"></bean>
<aop:config>
<aop:aspect id="b" ref="logInteceptor">
<aop:pointcut id="log" expression="execution(* com.xiu.search.core.*.*(..))"/>
<aop:pointcut id="log" expression="execution(* com.xiu.search.core.*.*.*(..))"/>
<aop:before pointcut-ref="log" method="before"/>
<aop:after pointcut-ref="log" method="after"/>
</aop:aspect>
</aop:config>
-->
<aop:aspectj-autoproxy/>
</beans>


import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogInteceptor {
private Logger logger = Logger.getLogger(getClass());

/**
* 拦截类的入口
*/
@Pointcut("execution(* com.xiu.search.core.bof.impl.BrandBoImpl(..))")
public void pointCut() {
logger.info("ponit....");
}

@Before("pointCut()")
public void before() {
logger.info("被拦截方法调用之前调用此方法,输出此语句");
}

@After("pointCut()")
public void after() {
logger.info("被拦截方法调用之后调用此方法,输出此语句");
}

@Around("pointCut()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("开始环绕通知");//前置通知后执行
pjp.getArgs();//拦截类的入参数
pjp.getTarget();//拦截类
Object obj=pjp.proceed();//此处返回的是拦截的方法的返回值,如果不执行此方法,则不会执行被拦截的方法,利用环绕通知可以很好的做权限管理
System.out.println(obj+"结束环绕通知");//后置通知后、最后通知前执行
return obj;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值