Java 切入点不适用于Spring AOP
为了使用SpringAOP实现日志记录,我遵循以下简单步骤。但它似乎不起作用。任何帮助都是有用的 1) 创建MyLoggingAspect类Java 切入点不适用于Spring AOP,java,spring,logging,aop,spring-aop,Java,Spring,Logging,Aop,Spring Aop,为了使用SpringAOP实现日志记录,我遵循以下简单步骤。但它似乎不起作用。任何帮助都是有用的 1) 创建MyLoggingAspect类 import org.aspectj.lang.ProceedingJoinPoint; public class MyLoggingAspect { public MyLoggingAspect() { super(); System.out.println("Instantiated MyLoggin
import org.aspectj.lang.ProceedingJoinPoint;
public class MyLoggingAspect
{
public MyLoggingAspect() {
super();
System.out.println("Instantiated MyLoggingAspect");
}
public Object log(ProceedingJoinPoint call) throws Throwable
{
System.out.println("from logging aspect: entering method [" + call.toShortString()
+"] with param:"+call.getArgs()[0] );
Object point = call.proceed();
System.out.println("from logging aspect: exiting method [" + call.toShortString()
+ "with return as:" +point);
return point;
}
}
2) 创建了一个类(TixServiceImpl),我想在其中记录日志
public class TixServiceImpl implements TixService{
@Override
public void calculateSomething() {
String s = "did some calculation..";
System.out.println(s);
}
@Override
public String getTixName() {
return null;
}
}
3) 创建了一个spring aspectj.xml文件
<beans...
<bean id="LoggingAspect" class = "MyLoggingAspect"/>
<aop:config>
<aop:aspect ref="LoggingAspect">
<aop:pointcut id="myCutLogging"
expression="execution(* TixService*.*(..))"/>
<aop:around pointcut-ref="myCutLogging" method="log"/>
</aop:aspect>
</aop:config>
</beans>
5) 它为我提供了以下输出
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class TixClient {
public static void main(String[] a){
ApplicationContext context = new FileSystemXmlApplicationContext("conf/spring-aspectj.xml");
TixService tix = new TixServiceImpl();
tix.calculateSomething();
String s = tix.getTixName();
System.out.println("End of the the client invocation!!");
}
}
。。。
实例化的MyLoggingAspect
做了一些计算。。
客户端调用结束!!
我只是在检查您的代码,但我有一种预感,问题是您没有从Spring获得TixServiceImpl
实例,而是自己在TixClient
中手动实例化它。我认为您的TixService
需要是一个Springbean,从Spring应用程序上下文获得,这样Spring就有机会在返回的实例上设置方面。Scott Bale是对的:让Spring为您安装TixServiceImpl。同样在这种情况下,启用Springs日志记录可能会有所帮助,因为它会告诉您找到了aspect/avice的多少个目标。感谢您的提示,它起到了作用。如果在线提供的示例/示例/教程中提到了这一点,那就太好了。如何启用spring日志记录?spring文档提供了各种启用日志记录的方法: