I Frühling lerne :)Proxy-Muster durch die Feder verwendet
ich folgende Zweifel haben,
- Does Feder für jede Bohne Proxy-Objekt erstellt, auch wenn ich nicht Anmerkungen zum Beispiel @Transactional verwendet haben, die ich denke, brauche Proxy.
- las ich folgendes in spring documentation
Beachten Sie, dass @Bean Methoden zur statischen Aufruf wird nie durch den Behälter abgefangen bekommen, nicht einmal innerhalb @Configuration Klassen (siehe oben). Dies liegt an technischen Einschränkungen: CGLIB-Unterklassen können nur nicht statische Methoden überschreiben. Als Konsequenz wird ein direkter Aufruf einer anderen @Bean-Methode eine Standard-Java-Semantik haben, was dazu führt, dass eine unabhängige Instanz direkt von der Factory-Methode selbst zurückgegeben wird.
a. Spring gibt das Proxy-Objekt im folgenden Beispiel wegen der statischen Methode, die nicht überschrieben werden kann, nicht zurück. So wird hier Originalobjekt zurückgegeben. Habe ich recht?
@Configuration
public class Config {
@Bean
public static Student student() {
return new Student();
}
}
b. Bedeutung von "Beachten Sie, dass Aufrufe von statischen @Bean-Methoden niemals vom Container abgefangen werden, auch nicht innerhalb von @Configuration-Klassen"
Und Antwort für Q 1. ist Frühling schafft Proxy für jede Bean und verwendet jdk Schnittstelle Proxy dafür? –
Ja, im Frühling wird Proxy für jede Bohne erstellt, wenn der Lebenszyklus vom Frühling gesteuert wird. Und Spring wird JDK-basierte Proxies verwenden, wenn Ihre Spring Bean-Klasse eine der Schnittstellen erweitert. Wenn es keine Schnittstelle erweitert, verwendet es CGLIB-basierte Proxies. – asg