У меня есть большое весеннее веб-приложение, которое использует аннотации. Тем не менее, есть некоторые классы, которые аннотируются с помощью @ component/service, но не отвещаются от того, где они вызываются. Вместо этого используется новый оператор.Найти все классы, которые не являются @Autowired
Я хочу найти все такие экземпляры пользовательских классов, в которых используется новый оператор.
В принципе, я создал новый класс-оболочку Http (весенний компонент), и я вызываю его из нескольких мест в приложении. Некоторое место это работает, потому что автоматическая проводка к нему работает, потому что содержащий класс и классы от начала цепи управляются весной. Но в некоторых местах это не работает, потому что один из классов в вызывающей цепочке был создан с использованием новых и не управляется весной. Поэтому я хочу исправить это и сделать такие классы также управляемыми весной.
Я говорю о 100 классах, поэтому, пожалуйста, предложите инструмент или метод, который можно сделать за 3-4 часа и предотвратит человеческие ошибки. Я использую затмение.
Пример:
@Component
public class MyHttpClient {
public int execute() {
...
}
}
@Component
public class UtilC {
@Autowired
private MyHttpClient client;
public int methodC() {
// When methodC is called from A, it works
// but when called from B, it gives NullPointerException
client.execute();
}
}
@Component
public class UtilB {
private UtilC c = new UtilC();
public int methodB() {
c.methodC();
}
}
@Component
public class UtilA {
@Autowired
private UtilC c;
public int methodA() {
c.methodC();
}
}
Пожалуйста, не предполагают, что это:
@Component
public class UtilC {
@Autowired
private MyHttpClient client;
public int methodC() {
try {
client.execute();
} catch(NullPointerException npe) {
new MyHttpClient.execute();
}
}
}
Как мне найти все определяемые пользователем классы, которые экземплярам как новый UtilC
Они также названы как 'SomeService' таким образом, что вы можете написать для него регулярное выражение? – ChiefTwoPencils
Иерархия вызовов (Ctrl-Alt-H) не может сказать вам, кто вызывает конструктор? Если объект должен управляться Spring, никто не должен вызывать конструктор, кроме Spring, и это не будет отображаться, поскольку Spring использует отражение для этого. Если у вас нет конструктора для использования иерархии вызовов, временно создайте его. – Andreas
Нет, они не совсем определены, как написать для них регулярное выражение. Могу ли я искать переменные экземпляра пользовательских классов в eclipse, которые используют новый оператор? –