Wie Spring sucht nach Controller in der Webapp?
Frühling Container durchsucht alle Pakete angegeben durch @ComponentScan
Anmerkung (oder mit component-scan
in xml config) und wenn Sie Ihre Bean-Klasse mit Stereotyp Annotation wie @Controller
, Container Frühling markieren wird die Instanz (standardmäßig erstellen Singleton-Bereich) Ihrer Controller-Klasse und ordnet die URL zusammen mit dem Request-Methodentyp zu (wie GET
, POST
, PUT
, usw.). Die anderen Stereotyp-Annotationen sind aufgelistet here (wie @Service
, etc ..) und der Container erstellt auch Objekte für diese Typen.
Welche Funktion wurde in DispatcherServelet tatsächlich aufgerufen, um eine Instanz der Controller-Klasse zu erstellen?
Federkern-Container erstellt die Instanzen für alle Bohnen mit Klischees kommentieren (wie oben im Behälter erklärt starten) und dann Dispatcherservlet
verwendet HandlerMapping die URLs zu den Controller-Methoden und RequestMappingHandlerMapping
Implementierung zur Karte wird standardmäßig verwendet, und wenn die Anforderung kommt, wird sie an die jeweilige Controller-Methode delegiert. Sie können here suchen.
Kann ich mehrere Controller in meiner Anwendung haben?
Ja, Sie können in Ihrer Anwendung mehrere Controller definieren. In einem typischen Webanwendungsprojekt würden Sie viele Controller-Klassen sehen, denen jeweils die entsprechenden URLs und die Geschäftslogik zugeordnet sind, die über ihre Serviceklassen abgewickelt werden.
Ich schlage vor, Sie beziehen sich auf this, um zu verstehen, wie der Federbahnfluss funktioniert.