Ich bin neu im Frühling. Ich versuche TestDAO ohne Setter-Methode zu starten. Aber ich habe es versäumt, autowire.Frühling Autowire ohne Setzer Methode
System.out.println ("TestClass.testDAO" + testDAO); Es gibt null zurück.
Bitte helfen Sie mir zu entsperren.
Meine xml config:
<context:component-scan base-package="com.test" />
<context:annotation-config/>
<bean id="testClass" class="com.test.TestClass" autowire="byName">
</bean>
Java-Klassen:
@Component
public class TestClass {
@Autowired(required=true)
public TestDAO testDAO = null;
{
System.out.println("TestClass.testDAO "+testDAO);
}
}
@Repository
public class TestDAO{
}
Natürlich wird es zurückgeben 'null' an diesem Punkt. Der Initialisierer ist Teil des Konstruktors, spring kann nur Abhängigkeiten nach dem Konstruktor einfügen, der das Objekt konstruiert hat. Also ja, zu diesem Zeitpunkt ist es immer noch 'null', weil es danach injiziert wird. –
Danke Deinum. Ich kann keine Idee bekommen .. Kannst du bitte helfen, meinen Code zu korrigieren .. Wirklich ich kämpfe. – DEADEND
Wie kann der Frühling etwas in ein Objekt injizieren, das nicht existiert? Wie machst du das? Wie im Initialisiererblock angegeben, wird der Teil zwischen '{}' in den Konstruktor kopiert ... An diesem Punkt ist er immernoch null ... Wie bereits erwähnt, erfolgt die Injektion NACHDEM Sie '@ Autowired' Felder in einem Konstruktor nicht verwenden können. –