Frühlings -AOP mit rund um Ratschläge und @Annotation funktioniert nichtJava

Java-Forum
Anonymous
 Frühlings -AOP mit rund um Ratschläge und @Annotation funktioniert nicht

Post by Anonymous »

Ich benutze Frühlings -AOP zum Anmelden in meiner Anwendung. Hier ist die Datei applicationContext.xml < /p>
























< /code>

Und mein Aoplogging.xml ist < /p>



< /code>

Und meine Aspektklasse ist < /p>

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;

@Aspect
@Component
public class AopLoggingAspect {

private static final Logger logger = Logger.getLogger(AopLoggingAspect.class);

@Around(value="@annotation(com.template.log.Loggable)")
public Object logAround(final ProceedingJoinPoint joinPoint) throws Throwable{
Object retVal = null;
try {
StringBuffer startMessageStringBuffer = new StringBuffer();

startMessageStringBuffer.append("Start method execution :: ");
startMessageStringBuffer.append(joinPoint.getSignature().getName());
startMessageStringBuffer.append("(");

Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
startMessageStringBuffer.append(args).append(",");
}
if (args.length > 0) {
startMessageStringBuffer.deleteCharAt(startMessageStringBuffer.length() - 1);
}

startMessageStringBuffer.append(")");
logger.info(startMessageStringBuffer.toString());
StopWatch stopWatch = new StopWatch();
stopWatch.start();
retVal = joinPoint.proceed();
stopWatch.stop();

StringBuffer endMessageStringBuffer = new StringBuffer();
endMessageStringBuffer.append("Finish method ");
endMessageStringBuffer.append(joinPoint.getSignature().getName());
endMessageStringBuffer.append("(..); execution time: ");
endMessageStringBuffer.append(stopWatch.getTotalTimeMillis());
endMessageStringBuffer.append(" ms;");

logger.info(endMessageStringBuffer.toString());
} catch(Exception ex) {
StringBuffer errorMessageStringBuffer = new StringBuffer();
logger.error(errorMessageStringBuffer.toString(), ex);
throw ex;
}
return retVal;
}
}
< /code>

und meine benutzerdefinierte Annotation lautet < /p>

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Loggable {
}
< /code>

Und meine Dienstklasse ist < /p>

public class UserService {
@Transactional(readOnly=true)
@Loggable
public User getUserByUserId(Long userId){
return userRepository.findOne(userId);
}
}
< /code>

Das Problem ist, dass die Protokolle nicht gedruckt werden. Bitte hilf mir. Dank im Voraus. Bitte lassen Sie mich wissen, ob andere Informationen erforderlich sind.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post