In попытался добавить новый класс аспектов в пакет аспектов в org.springframework.samples.petclinic.
Мой класс аспекта выглядит следующим образом:
package org.springframework.samples.petclinic.aspects;
import org.apache.openjpa.jdbc.sql.Join;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.samples.petclinic.context.SessionContext;
import java.util.Date;
@Aspect
public class MethodLogAspect {
Logger logger = LoggerFactory.getLogger(MethodLogAspect.class);
@Pointcut("execution(* org.springframework.samples..*.*(..))")
public void methodLogging(){}
@Before("methodLogging()")
public void logMethodStart(JoinPoint joinPoint){
String methodName = joinPoint.getSignature().getName();
String className = joinPoint.getTarget().getClass().getName();
logger.info("class name: "+className+"invoked method:"+methodName+" at "+ ((new Date()).getTime()));
}
@After("methodLogging()")
public void logMethodEnd(JoinPoint joinPoint){
String methodName = joinPoint.getSignature().getName();
String className = joinPoint.getTarget().getClass().getName();
logger.info("class name: "+className+"finished invoking method:"+methodName+" at "+ ((new Date()).getTime()));
}
}
Затем я добавил файл aop.xml в / resources / META-INF следующим образом:
<?xml version="1.0"?>
<!-- Custom aspects for the PetClinic sample application -->
<aspectj>
<weaver>
<include within="org.springframework.samples.petclinic..*"/>
</weaver>
<aspects>
<aspect name="org.springframework.samples.petclinic.aspects.UsageLogAspect"/>
<aspect name="org.org.springframework.samples.petclinic.aspects.MethodLogAspect"></aspect>
<concrete-aspect name="org.springframework.samples.petclinic.aspects.ApplicationTraceAspect"
extends="org.springframework.samples.petclinic.aspects.AbstractTraceAspect">
<pointcut name="traced" expression="execution(* org.springframework.samples..*.*(..))"/>
</concrete-aspect>
</aspects>
</aspectj>
Когда я строю войну и разворачиваю ее, ни один из выводов, указанных в моем аспекте, не отображается в журнале. Я не уверен, какой именно шаг я здесь пропускаю. Я также чувствую, что не понимаю механику того, как все связано. Может кто-нибудь указать, что мне не хватает, и подтолкнуть меня в правильном направлении.
Спасибо
Edit:
Мне удалось решить эту проблему, добавив компонент (аспект) в папку applicationContext-jdbc.xml
в папке webapp / WEB-INF / spring. Я не уверен, почему это будет работать? Может ли кто-нибудь дать мне объяснение? -Спасибо