[JAVA] Frühlingsrahmen Einfaches Studienmemo (1): ApplicationContext, Bean, Autowired
Frühlingsrahmen Einfaches Studienmemo (1): ApplicationContext, Bean, Autowired
Wesentlich
- Vermeiden Sie neue Klassen
- IoC, DI, Abhängigkeitsinjektion
Denkweise
- Container-Definition (ApplicationContext)
- Container Definition (Bean)
Definitionsmethode
- A, JAVA Basis
- B, XML-basiert
- C, Anmerkungsbasis ★
JAVA Basis
- @ Konfiguration (Containerseite)
- @ Bean (Containerseite)
XML-basiert
Anmerkungsbasis
- @ Konfiguration (Containerseite)
- @ ComponentScan (Containerseite)
- @ Komponente (Containerseite)
Bohnenreferenz
- A、setXXX()
- B, Konstruktor ()
@Autowired
- @Autowired(required = false)
- Stellen Sie ein, ob ein Einspritzwert erforderlich ist. Vermeiden Sie Fehler, wenn diese nicht eingestellt sind
- @Qualifier("XXX")
-Injektionstypbasiert ⇒ Namensbasiert können mehrere Beans desselben Typs injiziert werden
- @Bean(name = "XXX")
- Kann angegeben werden
- Sie können Ihre eigene Anmerkung definieren
- Felder und Eigenschaften
--Batch Autowired ist mit List und Map möglich
@ComponentScan
- @ComponentScan(basePackages = "XXX.XX.XX")
--Ziel:
- @ Controller Anfragen und Antworten
- @ Service Business
- @ Repository Datenpersistenz
- @ Komponente Andere als die oben genannten
--Filter kann angegeben werden
Bean Scope
- singleton(default)
- Gleiche Instanz im DI-Container
- porototype
--Erstellen Sie eine Instanz, wenn Sie eine Bean erhalten
- session
Sitzungseinheit
- request
Anfrageeinheit
-- etc.
Verschiedene Umfangsprobleme verstehen
- Berücksichtigung der Art der generierten Instanz
--Verwenden von Proxy mit Gültigkeitsbereich
Entsorgen Sie den Behälter
- Ausdrücklich schließen
context.close()
Split Config
- @import({AxxConfig.class,BxxConfig.class})
Konfigurationsprofilerstellung
- @profile("development")
- @profile("production")
--Das Obige kann für jede Umgebung ausgewählt werden