Verständnis Spring Boot @Autowired

Ich verstehe nicht, wie spring Stiefel annotation @Autowired richtig funktioniert. Hier ist ein einfaches Beispiel:

@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"); }
}

Wenn ich diesen code ausführen, bekomme ich die logs init App und init Starter, so den Frühling erstellen dieser Objekte. Aber wenn ich rufe die init-methode von Starter im App bekomme ich NullPointerException. Gibt es noch mehr, ich muss dann mithilfe der annotation @Autowired init mein Objekt?

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
  • Je nach Umfang Ihrer Bohne, weil eine Spring-Boot-app ist so vorkonfiguriert, verwenden Sie den Paket-Scannen, wird der Frühling erstellen Sie eine Instanz der bean, die Sie verwenden möchten. Aber, nur weil es erstellt wurde, bedeutet nicht unbedingt, dass es gespritzt wurden.
InformationsquelleAutor | 2016-07-20
Schreibe einen Kommentar