Ist Spring Annotation @Controller wie @Service?
Ist der Frühling annotation @Controller
gleiche wie @Service
?
Ich habe Ahnung von @Controller
die verwendet werden können, für URL
mapping und Aufruf von business-Logik.
während @Service
verwendet, um kommentieren service-Klasse enthält die business-Logik.
Kann ich @Controller
statt @Service
zu kommentieren Service-Klasse?
InformationsquelleAutor der Frage Ketan | 2013-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Sie sind ziemlich Verschieden von jeder anderen.
Beide sind unterschiedliche Spezialisierungen der @Komponente annotation (in der Praxis, Sie sind zwei verschiedene Implementierungen der gleichen Schnittstelle), so können beide entdeckt werden, die durch die classpath-scan (wenn Sie erklären, es in der XML-Konfiguration)
@Service - Anmerkung, die Sie in Ihrem service-layer und kommentiert Klassen, die Durchführung von service-Aufgaben, oft brauchen Sie es nicht verwenden, aber in vielen Fällen Sie verwenden diese Anmerkung zur Darstellung eines best-practice. Sie könnten zum Beispiel den direkten Aufruf einer DAO-Klasse zu bestehen, ein Objekt zu Ihrer Datenbank, aber das ist ja schrecklich. Es ist ziemlich gut zum aufrufen einer service-Klasse aufruft, wird das DAO. Dies ist eine gute Sache, zur Durchführung der Trennung von Bedenken Muster.
@Controller annotation ist eine annotation verwendet in Spring-MVC-framework (die Komponente des Spring-Frameworks zur Implementierung von Web-Anwendung). Die @Controller-annotation gibt an, dass eine bestimmte Klasse dient die Rolle eines Controllers. Die @Controller-annotation fungiert als Stereotyp für die annotierte Klasse, der angibt, seine Rolle. Der dispatcher durchsucht solchen annotierten Klassen für die zugeordneten Methoden und erkennt @RequestMapping annotations.
So sah das Spring MVC-Architektur haben Sie ein DispatcherServlet Klasse (, erklären Sie in Ihrem XML-Konfiguration) , stellen eine front-controller, versenden der HTTP-Anfrage an den richtigen controller-Klassen (kommentiert von @Controller). In dieser Klasse führen die business-Logik (und Aufruf der Dienste) durch Ihre Methode. Diese Klassen (oder Methoden) sind normalerweise kommentiert auch mit @RequestMapping Anmerkung, die festlegen, welche HTTP-Anfrage wird vom controller verarbeitet und durch seine Methode.
Beispiel:
Diese Klasse ist ein controller.
Diese Klasse behandelt alle HTTP-Request auf "/Termine" - "Ordner" und insbesondere die get-Methode wird die Methode aufgerufen, um alle die GET-HTTP-Request in Richtung der Ordner "/Termine".
Ich hoffe, dass es nun klarer für dich.
InformationsquelleAutor der Antwort AndreaNobili
Wenn man sich die Definitionen von
@Controller
@Service
Anmerkungen, dann werden Sie finden, dass diese spezielle Art von@Component
annotation.Also, was ist der Unterschied?
Den
@Controller
annotation zeigt an, dass eine bestimmte Klasse dient die Rolle eines Controllers. Die@Controller
annotation fungiert als Stereotyp für die annotierte Klasse, der angibt, seine Rolle.Was ist das Besondere an der @Controller?
Können Sie nicht Umschalten diese annotation mit anderen wie
@Service
oder@Repository
obwohl Sie sehen gleich.Der dispatcher durchsucht die Klassen annotiert mit
@Controller
und erkennt@RequestMapping
Anmerkungen in Ihnen. Sie können nur@RequestMapping
auf@Controller
annotierten Klassen.@Services
business-Logik und rufen Sie die Methode im repository-Ebene.Was ist das Besondere an der @ - Service?
Abgesehen von der Tatsache, dass es verwendet wird, um anzuzeigen, dass es hält die business-Logik, es gibt keine auffälligen Besonderheit, die diese annotation bietet, aber wer weiß, Frühling vielleicht fügen Sie einige weitere außergewöhnliche in der Zukunft.
Verlinkten Antwort: Was ist der Unterschied zwischen @Component, @Repository & @Service Anmerkungen im Frühjahr?
InformationsquelleAutor der Antwort Raman Sahasi
Nein,
@Controller
ist nicht das gleiche wie@Service
obwohl Sie beide sind Spezialisierungen der@Component
so dass Sie beide Kandidaten für die Entdeckung durch die classpath-Scans. Die@Service
- Anmerkung, die Sie in Ihrem service-layer, und@Controller
ist für Spring MVC-Controller im presentation layer. Ein@Controller
normalerweise hätte ein URL-mapping und werden ausgelöst durch eine web-Anfrage.InformationsquelleAutor der Antwort NilsH
@Service vs @Controller
@Service : die Klasse ist ein "Business Service Facade" (in der Core J2EE patterns Sinne), oder etwas ähnliches.
@Controller : Zeigt an, dass eine annotierte Klasse wird ein "Controller" (z.B. eine web-controller).
----------Finden Sie Nützliche Hinweise auf die Wichtigsten Stereotypen
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Component.html
@interface-Komponente
Zeigt an, dass eine annotierte Klasse ist eine Komponente. Solche Klassen werden als Kandidaten für die auto-Erkennung bei der Verwendung von annotation-basierte Konfiguration und classpath scanning.
Anderen Klasse-level-Annotationen kann als die Identifizierung einer Komponente, in der Regel eine spezielle Art von Komponente: z.B. der @Repository annotation oder AspectJ die @Aspect-annotation.
@interface Controller
Zeigt an, dass eine annotierte Klasse wird ein "Controller" (z.B. eine web-controller).
Diese Anmerkung dient als eine Spezialisierung des @ - Komponente, so dass für die Implementierung von Klassen werden automatisch erkannt, die durch die classpath-scan. Es wird in der Regel in Kombination mit kommentierten handler-Methoden, die auf die RequestMapping-annotation.
@- Schnittstelle Service -
Zeigt an, dass eine annotierte Klasse ist ein "Service", ursprünglich definiert Domain-Driven Design (Evans, 2003) als "eine operation angeboten, die als eine Schnittstelle, die allein steht im Modell mit nicht gekapseltem Zustand."
Kann auch bedeuten, dass eine Klasse ist eine "Business Service Facade" (in der Core J2EE patterns Sinne), oder etwas ähnliches. Diese Anmerkung ist eine Allgemeine Stereotyp und die einzelnen teams können schmal, Ihre Semantik und Verwendung als angemessen.
Diese Anmerkung dient als eine Spezialisierung des @ - Komponente, so dass für die Implementierung von Klassen werden automatisch erkannt, die durch die classpath-scan.
@interface Repository
Zeigt an, dass eine annotierte Klasse ist ein "Repository", ursprünglich definiert Domain-Driven Design (Evans, 2003) als "einen Mechanismus zur Kapselung von Speicher -, Abruf-und search-Verhalten emuliert eine Sammlung von Objekten".
Teams Umsetzung der traditionellen J2EE-patterns wie "Data Access Object", kann auch dieses Klischee zu DAO-Klassen, obwohl darauf geachtet werden sollte, um zu verstehen, die Unterscheidung zwischen Data Access Object und DDD-Stil-Repositorys, bevor Sie dies tun. Diese Anmerkung ist eine Allgemeine Stereotyp und die einzelnen teams können schmal, Ihre Semantik und Verwendung als angemessen.
Einer Klasse so kommentierte berechtigt ist für das Frühjahr DataAccessException übersetzung, wenn verwendet, in Verbindung mit einem PersistenceExceptionTranslationPostprocessor. Die kommentierte Klasse ist auch geklärt als Ihre Rolle in der die gesamte Applikations-Architektur für die Zwecke von Werkzeugen, Aspekte usw.
Ab Spring 2.5, diese Anmerkung dient auch als eine Spezialisierung der @Component -, so dass für die Implementierung von Klassen werden automatisch erkannt, die durch die classpath-scan.
InformationsquelleAutor der Antwort Kanthishere
Ich bereits eine Antwort auf ähnliche Frage hier Hier ist der Link
Nein beide sind unterschiedlich.
@Service-annotation Verwendung für andere Zwecke und @Controller nutzen für andere.
Eigentlich Spring @Component, @Service, @Repository und @Controller annotations verwendet werden für die automatische bean Erkennung mithilfe von classpath-scan im Spring-framework, aber es
nicht ,bedeuten, dass alle Funktionalitäten sind die gleichen.
@Service: Sie gibt annotierte Klasse ist eine Service-Komponente in der business-Schicht.
@Controller: Annotierte Klasse zeigt an, dass es ein controller-Komponenten, und hauptsächlich an der Präsentation.
InformationsquelleAutor der Antwort Yasir Shabbir Choudhary
Nein, Sie können nicht, Sie sind anders. Wenn die app bereitgestellt wurde, Ihre controller-Zuordnungen werden würde geschlafen zum Beispiel.
Warum willst du sowieso einen controller nicht ein service, und Umgekehrt.
InformationsquelleAutor der Antwort NimChimpsky