Я хочу получить точный граф вызовов (с использованием сажи SPARK) при анализе веб-приложения с помощью Spring FrameWork, но у меня есть одна большая проблема, которую нужно решить: Spring использует DI (внедрение зависимостей) для управления bean-компонентами, что означает, что мы не нужно создать объект. В этом случае я не могу получить точный граф вызовов (используя SPARK) для некоторого интерфейса.
Пример: когда я использую сажу для получения графа вызовов с помощью SPARK (mainClass = AnimalMain.main (String [] args) ), он не может найти класс реализации «Животное свинья» и «Животное человека», поэтому результат не содержит никаких преимуществ по поводу «pig.eat ()». Поэтому для веб-приложений, использующих Spring FrameWork, это нецелесообразно。
Как я могу получить точный граф вызовов?
public class AnimalMain {
@Autowired
Animal pig;
@Autowired
Animal human;
Tree pineTree = new PineTree();
public static void main(String[] args) {
AnimalMain animalMain = new AnimalMain();
animalMain.eat();
}
void eat() {
pig.eat();
pineTree.grow();
}
}
public interface Animal {
void eat();
}
@component(value = "pig")
public class Pig implements Animal {
@Override
public void eat() {
System.out.println(doEat());
}
private String doEat() {
return "pig eat";
}
}
@component(value = "human")
public class Human implements Animal {
@override
public void eat() {
System.out.println("human eat ……");
}
}