Рекурсивно просканируйте код Java и найдите вызов метода - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь разработать модуль с maven во время компиляции или с компонентом Spring при запуске приложения, этот модуль должен будет сканировать конечные точки нескольких классов RestController и смотреть в их код, если указано c вызывается тип метода, а затем генерируется JSON конечных точек, из которых c конечные точки запускают эту специфицированную *1013* функцию и выгружают всю информацию (путь конечной точки, подпуть, Http-метод ...), цель состоит в том, чтобы получить все данные о том, кто вызвал этот метод и с какими параметрами,

Основная проблема заключается в том, что методы конечных точек не вызывают функцию непосредственно в своем теле, они вызывают другой объект на бизнес-уровне,

Есть ли способ рекурсивно отслеживать вызов метода, начиная с определенного c класса?

Вот небольшой пример:

@RestController("/")
public class PersonController{
    // Declarations...
    @Autowired
    BusinessLayer businessLayer;
    @GetMapping("/persons")
    public List<Person> getAllPersons(){
        return businessLayer.fetchAllPersons();
    }
}

public class BusinessLayer{
    // Declarations...
    public List<Person> fetchAllPersons(){
        CustomHttpClient customHttpClient= new CustomHttpClient();
        customHttpClient.sendHTTPRequest("http://lorem-ipsum:8080/persons",Http.GET);
        //...
    }
}

Есть ли способ узнать, кто вызывает CustomHttpClient Метод и с какими параметрами? Зная, что даже бизнес-уровень может вызывать другие методы, которые делают то же самое, поэтому в конце нужно рекурсивно сканировать код в поисках определенного c вызова.

...