#StackBounty: #spring How to make advice in Spring & aspectJ

Bounty: 50

I tried to create Pointcut & advice for annotation Scheduled and public methods in com.example package, but it doesnt work. When I tryed to call services in com.example, advice doesnt work. Also for annotation @Scheduled it doesnt work. I try to read documentation, it seems that it should work, but in reality it doesnt work. Can please someone give me a point, how to solve this issue.

package com.dhl.common.logging;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.MDC;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import java.net.InetAddress;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

public class LoggingAspect {
    private static final String DATE_FORMATTER= "MMM dd, yyyy'T'HH:mm:ss.SSS";
    public static final String LOG_LEVEL_KEY = "LOG_LEVEL";
    public static final String APP_NAME_KEY = "APP_NAME";
    public static final String LOGGER_CLASS_NAME_KEY = "LOGGER_CLASS_NAME";
    public static final String SERVER_NAME_KEY = "SERVER_NAME";
    public static final String FORMATED_TIME_KEY = "FORMATED_TIME";
    public static final String ENVIROMENT_KEY = "ENVIROMENT";
    public static final String DISTRIBUTE_TRACE_ID_KEY = "DISTRIBUTE_TRACE_ID";

    private void scheduled() {}

    private void service() {}

    @Around("scheduled() && service()")
    public Object connectionAdvice(ProceedingJoinPoint joinPoint) throws Throwable {

        MDC.put(LOG_LEVEL_KEY, "INFO");
        MDC.put(APP_NAME_KEY, "CRDB");
        MDC.put(LOGGER_CLASS_NAME_KEY, joinPoint.getSourceLocation().getWithinType().toString());
        String serverName = InetAddress.getLocalHost().getHostName();
        MDC.put(SERVER_NAME_KEY, serverName);
        MDC.put(FORMATED_TIME_KEY, getFormatedTime());

        if(serverName != null) {
            if(serverName.toUpperCase().contains("LOCALHOST")) {
            } else if(serverName.toUpperCase().contains("TEST")) {
            } else if(serverName.toUpperCase().contains("UAT")) {
            } else {
        MDC.put(DISTRIBUTE_TRACE_ID_KEY, UUID.randomUUID().toString());

        try {
            return joinPoint.proceed();
        finally {
            // Might as well clear all the MDC, not just the "myId"

    private String getFormatedTime() {
        LocalDateTime localDateTime = LocalDateTime.now(); //get current date time

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_FORMATTER);
        String formatDateTime = localDateTime.format(formatter);

        return formatDateTime;


Get this bounty!!!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.