1. Verwenden Sie Anmerkungen:
Fügen Sie in der Konfigurationsdatei -Datei applicationContext.xml Anmerkungsscan hinzu. Das Konfigurationselement konfiguriert das Scannen bestimmter Pakete, um die Abhängigkeitsinjektion zu implementieren.
<? xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.spingframework.org/schema/aop" xsi: schemalocation = "http./wwwwwwww./wwwww./wwww./www./www./ww./wwww.Schema http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/context/context/context/context/context/contex/context/context/contex/conted./Sconted.-context- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframe.org/schema/aop/aPring/sping- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd "> <aoP: Aspektj-Autoproxy/> <contexte: Annotations-config/<contexsconscon: com. contexte: contexte: contexte: contexte: contexte: com. contexte: contexte: com. contexte: contexsconted" com. contexs: com. contexd "com. contexs: com. contexs: com. contexd" com. contexs: com. contexs: com. contexd. /> // wo scannen < /beans>
2. Gemeinsame Kommentare:
@Controller@service@autowired@requestmaping@requestparam@modelAttribute@cacheable@cacheFlush@ressourcen@postconstruct@prädestroy@repository@component (nicht empfohlen)@sacheattributes@initbinder@forure qualifierer
3. Allgemein verwendete Federanmerkungen:
@Controller (für Präsentationsschichten)
Nachdem @Controller Annotation zur Identifizierung der Benutzeraktion verwendet wird, bedeutet dies, dass die Benutzeraktion für die Verwaltung an den Federcontainer übergeben werden soll. Es wird eine Aktion mit dem Namen "Benutzeraktion" im Federcontainer geben. Dieser Name wird basierend auf dem Namen der Benutzeraktionsklasse aufgenommen. Hinweis: Wenn @Controller seinen Wert 【@Controller】 nicht angibt, ist der Standard -Bean -Name im ersten Buchstaben des Klassennamens Kleinbuchstaben. Wenn Sie den Wert 【@controller (value = "userAction")】 oder 【@controller ("BenutzerAktion")】 angeben, verwenden Sie den Wert als Name der Bean.
Die Benutzeraktion hier verwendet auch die @Scope -Annotation. @Scope ("Prototyp") bedeutet, dass der Umfang der Aktion als Prototyp deklariert wird. Sie können den SCOPE = "Prototyp" des Containers verwenden, um sicherzustellen, dass jede Anforderung eine separate Aktion zum Umgang mit der Handlungssicherheit in Streben enthält. Frühling Der Standardbereich ist der Singleton -Modus (Scope = "Singleton"), der nur ein Aktionsobjekt erstellt. Jeder Zugriff ist das gleiche Aktionsobjekt. Die Daten sind nicht sicher. Struts2 erfordert, dass jeder Zugriff einer anderen Aktion entspricht. Scope = "Prototyp" kann sicherstellen, dass ein Aktionsobjekt erstellt wird, wenn eine Anforderung vorliegt.
@Regler
@Scope ("Prototyp") öffentliche Klasse Benutzeraktion erweitert Baseaction <Künstler> {}@ Service (in der Geschäftslogikschicht verwendet)
Beachten Sie, dass die @Service -Annotation unter der Implementierungsklasse der Serviceschnittstelle verwendet wird, nicht in der Schnittstelle.
Dies spiegelt die Kontrollinversion im Frühjahr sehr gut wider. Wir lassen das Objekt nicht das Objekt selbst instanziieren und verlassen uns aktiv auf das Objekt, sondern verwenden stattdessen einen Container, um das vom IOC verwaltete Objekt zu erstellen. Beispiel:
Wenn Aktionen UserServiceImpl verwenden möchten, müssen Sie keine Instanz von UserServiceImpl aktiv erstellen. Das Erstellen einer BenutzerserviceImpl -Instanz wurde an den Frühling übergeben. Spring gibt dem erstellten UserServiceImPL -Instanz der Aktion, und Sie können sie direkt nach Erhalt der Aktion verwenden. Aktionen können unmittelbar nach aktivem Erstellen der UserServiceImplin -Instanz verwendet werden, wartet jedoch passiv auf den Spring, um die BenutzerserviceImpl -Instanz zu erstellen, bevor sie sie in Aktion bringen. Dies zeigt, dass die "Kontrolle" der Aktion über die Klasse "UserServiceImpl" "umgekehrt" wurde. Es stellt sich heraus, dass die Initiative in meinen eigenen Händen ist. Ich muss die Klasseninstanz "UserServiceImpl" verwenden. Ich kann die Initiative ergreifen, um sie sofort zu verwenden. Aber jetzt kann ich die Initiative nicht auf neue Instanzen der Klasseninstanz "UserServiceImpl" ergreifen. Die Leistung der neuen "UserServiceImpl" -Klassinstanz wurde vom Frühling weggenommen. Nur Frühling können neue Instanzen der Klasseninstanz "UserServiceImpl" und Aktion nur darauf warten, dass der Frühling nach der Instanz der RviceImpl "Klasse" "BITTE" -FRINDE "Userse" -Klasse erstellt wird. UserserviceImpl zu funktionieren, sodass der UserServiceImpl (dh "Geben") der UserserviceImPL erstellt wird, auf die sich die Acion auf die Handlung abschließen muss, was als "Abhängigkeitsinjektion" bezeichnet wird.
@Service ("UserService") Public Class UserServiceImpl implementiert UserService {}@ Repository (für Datenverwaltung)
Der Autor verwendet das Tool, um das Entitätsschichtdatenmodell und Mapper umgekehrt zu generieren, sodass diese Annotation nicht verwendet wird. Dies injiziert jedoch einfach eine Bohne in den Federbehälter.
@Repository (value = "userDao") öffentliche Klasse UserDaoImpl erweitert basiertAoImpl <user> {}4. Allgemein verwendete SpringMVC -Anmerkungen:
@Autowired (nach Typ injiziert)
Annotate Klassenmitgliedsvariablen, Methoden und Konstruktoren, um die automatischen Montagearbeiten zu vervollständigen. Einfach ausgedrückt, es soll die Bohne anrufen und den Frühling sagen, dass sie existiert und im Container verwaltet wird.
@Autowired Suche aus dem Spring Online -Artikel gemäß dem Bean -Typ. Der Registrierungstyp muss eindeutig sein, andernfalls wird eine Ausnahme gemeldet.
Wenn die @autowired Annotation auf dem Kartentyp wirkt, fügt die Feder alle Typen im Container zum entsprechenden Typ des Kartenwerts hinzu und verwendet die ID oder den Namen der Bean als Schlüssel der Karte.
@Autowired Eine weitere Funktion ist, dass, wenn sie auf dem Beanfactory -Typ, dem ApplicationContext -Typ, dem Ressourcenoader -Typ, dem ApplicationEventPublisher -Typ und dem MessageSource -Typ annotiert ist.
@Autowired
private Ireportservice ReportService;
@Resource (mit dem Namen injiziert)
Ähnlich wie bei @autowired sucht @Resource standardmäßig nach dem Namen der Bean. Wenn es nicht gefunden wird, sucht es nach Typ.
@Ressource
private DataSource -DataSource; // Injizieren Sie die Bean mit dem Namen "DataSource"
@Resource (name = "dataSource")
@Resource (type = dataSource.class)
Erweiterte Frage: Was ist Montage nach Typ und was ist die Baugruppe nach Namen?
Mit Typ bedeutet, dass das Attribut automatisch zusammengestellt wird, wenn es eine Bohne mit dem gleichen Typ wie das angegebene Attribut im Federcontainer gibt. Wenn es mehrere Bohnen dieser Art gibt, wird eine Ausnahme ausgeführt, und es wird darauf hingewiesen, dass die automatische Montage nach Typ nicht verwendet werden kann. Wenn keine passende Bohne gefunden wird, wird nichts passieren.
Der sogenannte Name bedeutet die automatische Montage basierend auf dem Attributnamen. In diesem Artikel werden die Bohnen im Federbehälter überprüft, die genau dem Attributnamen entsprechen und die automatische Montage durchführen.
@RequestMapping (Kartenanforderungsadresse)
Anmerkungen, mit denen angeforderte Adresszuordnungen verwendet werden, können für Klassen oder Methoden verwendet werden. Für die Verwendung in einer Klasse nehmen alle Methoden, die diese Antwortanforderungen in einer Klasse darstellen, diese Adresse als übergeordnete Pfad an.
Es gibt sechs Attribute, nämlich:
1. Wert, Methode;
Wert: Gibt die tatsächliche Adresse der Anforderung an, und die angegebene Adresse kann im URI -Vorlagenmodus sein (der später erläutert wird).
Methode: Geben Sie den angeforderten Methodentyp an, erhalten Sie, posten, löschen, usw.;
2. konsumiert, produziert
Verbraucher: Gibt die Art der Einreichung (Inhaltstyp) an, die die Anforderung wie Application/JSON, Text/HTML verarbeitet;
Erzeugt: Gibt den zurückgegebenen Inhaltstyp an, der nur zurückgegeben wird, wenn der Typ (Akzeptieren) im Anforderungsanforderungsheader den angegebenen Typ enthält.
3. Parameter, Header
Parameter: Gibt an, dass die Anforderung bestimmte Parameterwerte enthalten muss, bevor die Methode verarbeitet werden kann.
Header: Gibt an, dass die Anforderung einige festgelegte Headerwerte enthalten muss, damit die Methode die Anforderung verarbeitet.
@Controller @RequestMapping ("/bbtforum.do") öffentliche Klasse BBTForumController {@RequestMapping (params = "methode = lightboardTopic") public String liftboardTopic (int topicid, Benutzerbenutzer) {}}@RequestMapping("/softpg/downSoftPg.do")@RequestMapping(value="/softpg/ajaxLoadSoftId.do", method=RequestMethod.POST)@RequestMapping(value="/osu/product/detail.do", params={"modify=false"}, method=RequestMethod.POST)@RequestParam (den Wert des Anforderungsparameters abrufen)
Zum Beispiel lautet unsere Zugriffsadresse im Browser: Localhost: 8080/Hallo? ID = 1000, und wir erhalten den ID -Wert, zum Beispiel:
@RestControllerPublic Class HelloConTroller {@RequestMapPing (value = "/hloa", method = requestMethod.get) public String SayShello (@RequestParam ("id") Integer id) {return "id:"+id; }}@Pathvaribale (Daten in der URL abrufen)
@RestControllerPublic Class HelloConTroller {@RequestMapPing (value = "/hloa/{id}", method = requestMethod.get) public String SayShello (@PathVariable ("id") Integer id) {return "id:"+id; }}@ResponseBody (Rückgabe Typ JSON)
Funktion: Diese Annotation wird verwendet, um das von der Controller -Methode zurückgegebene Objekt in das angegebene Format über das entsprechende httpMessageConverter umzuwandeln und in den Körperdatenbereich des Antwortobjekts zu schreiben.
Verwendungszeit: Die zurückgegebenen Daten sind keine Seite mit dem HTML -Tag, sondern werden verwendet, wenn Daten in einem anderen Format (wie JSON, XML usw.) verwendet werden.
Zusammenfassen
Die oben genannte ist die Analyse gemeinsamer Anmerkungen in Spring SpringMVC, die Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!