Was ist der Unterschied zwischen @autowired- und @resource-Annotationen?
Unterschiede: 1. Die Annotation @Autowired wird von Spring bereitgestellt und nur gemäß byType eingefügt. Die Annotation @resource wird von J2EE bereitgestellt und standardmäßig automatisch von byName eingefügt. 2. @Autowired wird standardmäßig nach Typ zusammengestellt, und @Resource wird standardmäßig nach Name zusammengestellt.
Verwandte Empfehlungen: „Java Video Tutorial“
Spring unterstützt nicht nur seine eigenen @Autowired-Anmerkungen, sondern auch mehrere in der JSR-250-Spezifikation definierte Anmerkungen. Beispiel: @Resource, @PostConstruct und @PreDestroy
1, @Autowired
werden von Spring bereitgestellt und nur gemäß byType
2 injiziert, @Resource
werden von J2EE bereitgestellt und sind es standardmäßig automatisch von byName eingefügt
@ Die Ressource hat zwei wichtige Attribute: Name und Typ
Spring analysiert das Namensattribut der @Resource-Annotation in den Namen der Bean und das Typattribut in den Typ der Bean. Wenn Sie also das Namensattribut verwenden, wird die automatische Injektionsstrategie byName verwendet, und wenn das Typattribut verwendet wird, wird die automatische Injektionsstrategie byType verwendet. Wenn weder das Namens- noch das Typattribut angegeben sind, wird die automatische Injektionsstrategie byName über den Reflexionsmechanismus verwendet.
@Ressourcenassembly-Reihenfolge:
(1) Wenn Name und Typ gleichzeitig angegeben werden, wird die einzige passende Bean aus dem Spring-Kontext für die Assemblierung gefunden. Wenn sie nicht gefunden wird, wird eine Ausnahme ausgelöst
(2 ) Wenn der Name angegeben ist, suchen Sie die Bean mit dem passenden Namen (ID) aus dem Spring-Kontext für die Assembly. Wenn sie nicht gefunden wird, wird eine Ausnahme ausgelöst. (3) Wenn der Typ angegeben ist, wird dies nur die Bean mit dem passenden Typ sein Wenn es nicht gefunden wird, wird eine Ausnahme ausgelöst. Wenn mehr als eine Ausnahme gefunden wird, wird eine Ausnahme ausgelöst.
automatisch in der byName-Methode durchgeführt. Wenn es keine Übereinstimmung gibt, wird für die Übereinstimmung auf einen primitiven Typ zurückgegriffen und bei einer Übereinstimmung automatisch verdrahtet.
Die Funktion von @Resource entspricht @Autowired, außer dass @Autowired automatisch entsprechend byType eingefügt wird.
3. Nutzungsunterschiede(1) Sowohl @Autowired als auch @Resource können zum Zusammenstellen von Bohnen verwendet werden, und beide können auf
Felderoder Setter-Methoden geschrieben werden (2)@Autowired wird zusammengebaut standardmäßig nach Typ
, standardmäßig muss das abhängige Objekt vorhanden sein. Wenn SieNullwerte zulassen möchten , können Sie sein erforderliches Attribut auf false setzen. Wenn Sie die Namensassemblierung verwenden möchten, können Sie sie in Verbindung mit der @Qualifier-Annotation verwenden. (3) @Ressource
,wird standardmäßig nach dem Namen zusammengestellt. Der Name kann über das Name-Attribut angegeben werden, wenn die Anmerkung in das -Feld geschrieben wird , übernimmt standardmäßig den Feldnamen. Führen Sie eine Namenssuche durch. Wenn die Annotation in die Setter-Methode geschrieben wird, wird der Attributname standardmäßig für die Assemblierung verwendet. Wenn keine Bohne findet, die dem Namen entspricht, wird entsprechend der Sorte zusammengestellt . Es ist jedoch zu beachten, dass bei Angabe des Namensattributs dieser nur nach dem Namen zusammengesetzt wird. Es wird empfohlen, die Annotation @Resource für das Feld zu verwenden, sodass keine Setter-Methode geschrieben werden muss. Diese Annotation gehört zu J2EE, wodurch die Kopplung mit Spring verringert wird.
@RessourcenannotationWeitere Kenntnisse zum Thema Programmierung finden Sie unter:
Programmierunterricht
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen @autowired- und @resource-Annotationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Zunächst checkifthefnkeysettingIssinterferingbyingbothThevolumeKeyaloneAndfn VolumeKey, thentogglefnlockwithfn EscifAvailable

TestthepdfinanotherapptodetermineeiftheisueiswithTheFileoredge.2.Enablethebuilt-InpdfviewerByTurningOff "immerOpenpdffileSexTternal" und "DownloadPdffffiles" Inedgesetings

Führen Sie den untergeordneten Prozess mit dem Betriebssystem/EXEC -Paket aus, erstellen Sie den Befehl über exec.Command, führen Sie ihn jedoch nicht sofort aus. 2. Führen Sie den Befehl mit .output () aus und fangen Sie Stdout an. Wenn der Exit-Code ungleich Null ist, return exec.exiterror; 3. Verwenden Sie .Start (), um den Prozess ohne Blockierung zu starten, mit .stdoutpipe () in Echtzeit aus der Ausgabe von Ausgang zu streamen; V. 5. Exec.EexitEerror muss verarbeitet werden, um den Ausgangscode und den Stderr des fehlgeschlagenen Befehls zu erhalten, um Zombie -Prozesse zu vermeiden.

Methodenüberladung und Methodenüberladung sind zwei Mechanismen zur Implementierung des Polymorphismus in Java. 1. Die Methodenüberlastung erfolgt in derselben Klasse. Es erfordert denselben Methodennamen, jedoch unterschiedliche Parameterliste (Nummer, Typ oder Reihenfolge der Parameter), die zum Kompilieren des Zeitpolymorphismus gehört. Der Rückgabetyp kann unterschiedlich sein, kann aber nicht allein durch den Rückgabetyp überlastet werden. Es kann unterschiedliche Zugriffsmodifikatoren und Ausnahmegerklärungen geben. 2. Die Umschreibung der Methode tritt in der Erbschaftsbeziehung auf. Die Unterklasse bietet die spezifische Implementierung der vorhandenen Methoden der übergeordneten Klasse. Es erfordert die gleiche Methodensignatur und der Rückgabetyp ist kompatibel. Der Zugangsmodifikator kann nicht strenger sein. Es gehört zum Laufzeitpolymorphismus. Die Instanzmethode muss verwendet werden und das richtige Umschreiben kann durch die @Override -Annotation sichergestellt werden. Zusammen verbessern die beiden die Code -Lesbarkeit und Skalierbarkeit.

Um verschachtelte für Schleifen zu optimieren, sollten zuerst redundante Iterationen vermieden werden, und die zeitliche Komplexität kann von O (N × m) auf O (n m) reduziert werden. Zweitens, wenn die Struktur nicht wirklich hierarchisch ist, sollten die Daten mithilfe von Methoden wie SelectMany abgeflacht werden. Drittens herausspringen oder unnötige Verarbeitung durch bedingte Beurteilung überspringen; Viertens wählen Sie geeignete Datenstrukturen wie Wörterbuch- oder Hash -Mengen aus, um die Suchffizienz zu verbessern. Fünftens kann eine Parallelisierung mit Vorsicht verwendet werden, wenn die Operationen unabhängig und zeitaufwändig sind. Sechstens, um eine komplexe Logik in unabhängige Methoden oder Abfragen zu extrahieren, um die Lesbarkeit und Wartbarkeit zu verbessern. Der Kern der Optimierung besteht darin, die Komplexität zu verringern, Daten vernünftig zu organisieren und immer die Notwendigkeit des Verschachtelns zu bewerten und letztendlich einen effizienten, klaren und erweiterbaren Code zu erreichen.

Containerisierte Java-Anwendung: Erstellen Sie eine Dockerfile, verwenden Sie ein grundlegendes Bild wie Eclipse-Temurin: 17-Jre-Alpine, kopieren Sie die JAR-Datei und definieren Sie den Startbefehl, erstellen Sie das Bild über Dockerbuild und führen Sie lokal mit Dockerun aus. 2. Drücken Sie das Bild in die Containerregistrierung: Verwenden Sie Dockertag, um das Bild zu markieren und zu Dockerhub und anderen Registern zu drücken. Sie müssen sich zuerst bei DockerLogin anmelden. 3.. Bereitstellen in Kubernetes: Schreiben Sie die Bereitstellung. Yaml, um die Bereitstellung zu definieren, die Anzahl der Replikate, Containerbilder und Ressourcenbeschränkungen festlegen und den Dienst schreiben.yaml zum Erstellen zu erstellen

UsespecificexceptionssinsteadofgenericonestohandleFerferenterErrorConditions-AppropheadavoidmaskinguninteredErrors.2.NeverignoreCaughtexceptions; immer logorre-throwthem und documentintentionalignes.3.ValidinputSearly und FasteFastemBythem

Javacanachievelow-LatencyPerformanceInapplicationslikeHigh-Frequencytradingandreal-TimeGamingByAddringKeyCalenChaldensPecificoptimizationtechniques.1.Uselow-PauseGAGECOLLECTORTORTORSCHAUSZGCORSHENANTOAHTOMIMIMEGCCOLLECOLLECTORTORSUCTOPLYPOOBTOOBYOHTOMIMIMEGCCOLLAYS.
