Я не понимаю, как правильно работает аннотация пружинной загрузки @Autowired
. Вот простой пример:
@SpringBootApplication
public class App {
@Autowired
public Starter starter;
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
public App() {
System.out.println("init App");
//starter.init();
}
}
-
@Repository
public class Starter {
public Starter() {System.out.println("init Starter");}
public void init() { System.out.println("call init"); }
}
Когда я выполняю этот код, я получаю журналы init App
и init Starter
, поэтому Spring создает эти объекты. Но когда я вызываю метод init из Starter
в App
, я получаю NullPointerException
. Что еще нужно сделать, кроме как использовать аннотацию @Autowired
для инициации моего объекта?
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'app': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [{package}.App$$EnhancerBySpringCGLIB$$87a7ccf]: Constructor threw exception; nested exception is java.lang.NullPointerException