Um das Lernen des Frühlings voranzutreiben, werde ich die Informationen, nach denen ich in den Unterrichtsmaterialien und online gesucht habe, auf meine eigene Weise zusammenfassen. Ich bin im Framework fast unerfahren, daher ist es eine super Einführung.
Was ist "Spring Boot"? Der Umfang von "Spring Framework" ist riesig geworden und es ist schwierig zu verstehen, wie man es benutzt. Hier kam "Spring Boot" ins Spiel.
Es ist ein Framework, das es ermöglicht, Spring-basierte Anwendungen schnell zu erstellen und auszuführen, indem solche Funktionen genutzt werden. Bitte haben Sie Verständnis dafür, dass es eine einfache Möglichkeit ist, eine Anwendung mit "Spring Framework" zu erstellen.
Lassen Sie uns nun das Wissen erwerben, das zum Erstellen einer Spring-Anwendung nacheinander erforderlich ist.
DI(Dependency Injection)
DI ist auf Japanisch "Injektion der Abhängigkeit". In Bezug auf die Bedeutung sollte es als "Injizieren eines Objekts" verstanden werden. Durch das Einfügen von Abhängigkeiten (Objekten) von außerhalb der Klasse werden Abhängigkeiten zwischen Klassen aufgelöst.
Es ist ein Rahmen, um DI zu realisieren. Erstellen und Verwalten von Instanzen über DI-Container. Neben der Auflösung von Klassenabhängigkeiten können auch die folgenden Nebenwirkungen auftreten:
-Der Umfang der Instanz kann gesteuert werden. → Ob jedes Mal generiert oder eine einzelne Tonne daraus gemacht werden soll -Eventsteuerung ist für den Lebenszyklus der Instanz möglich. → Ereignisverarbeitung zum Zeitpunkt der Erzeugung und Zerstörung usw. -Gemeinsame Verarbeitung kann eingebettet werden.
Definiert eine Konfigurationsdatei für den DI-Container zum Verwalten der Instanz. Es gibt drei Einstellmethoden.
Dieses Mal werden wir uns die Einstellungen in der Anmerkung ansehen.
Die Bean-Definition erfolgt durch Hinzufügen einer Anmerkung zur JAVA-Quelle. Wichtige Anmerkungen
@Component @ComponentScan @Autowired
Wird sein.
ComponentScan
Es ist eine Annotation, die die Klasse mit der Component-Annotation im DI-Container registriert. Gleiches Paket wie die Klasse mit ComponentScan-Annotation Scannen Sie die folgenden Klassen und registrieren Sie sie im DI-Container.
SpringSampleApplication.java
//@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SpringSampleApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringSampleApplication.class, args);
SampleB sampleb = context.getBean(SampleB.class);
sampleb.testDi();
}
}
@SpringBootApplication führt @Configuration, @EnableAutoConfiguration, @ComponentScan aus. Im Beispielcode werden die Anmerkungen absichtlich separat hinzugefügt.
Component
Befestigen Sie es an der Klasse zum Injizieren. Wenn Sie einer Klasse eine Komponentenanmerkung hinzufügen, verwaltet der DI-Container die Klasse für Sie.
SampleA.java
@Component
public class SampleA {
public String getClassName() {
return this.getClass().getName();
}
}
Eine Komponente, die nur ihren eigenen Klassennamen zurückgibt.
Autowired
Am zu injizierenden Feld befestigen. Der DI-Container sucht nach übereinstimmenden Objekten und fügt sie in die mit Autowired kommentierten Felder ein.
SampleB.java
@Component
public class SampleB {
@Autowired
private SampleA sampleA;
public void testDi() {
System.out.println("called " + sampleA.getClassName());
}
}
Lassen Sie die sampleA-Instanz aus dem DI-Container injizieren. Jetzt können Sie den Klassennamen von sampleA erhalten.
Da SampleB auch von der Hauptmethode aufgerufen werden muss, wird es als Komponente registriert.
Die folgenden Fälle scheinen nicht DI zu sein.
・ Statische DI -DI in der neu generierten Instanz
Diesmal, weil es von der Hauptmethode ausgeführt wird
SpringSampleApplication.java
@Autowired
private static SampleB sampleb;
/*Kürzung*/
sampleb.testDi();
Lose
SpringSampleApplication.java
SampleB sampleb = new SampleB();
sampleb.testDi();
Ich habe es versucht, aber beide haben nicht gut DI und ich habe eine NullPointerException bekommen.
Zusätzlich zur Komponente gibt es einige Anmerkungen, die gescannt werden können. Verwenden wir jede Anmerkung entsprechend der Rolle der Klasse.
@Controller(@RestController) → Ziel-MVC-Controller @Service → Ziel-Service-Schichten wie Geschäftslogik @Repository → Zielklassen, die auf DB zugreifen, z. B. DAO
[First Spring Boot](https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AESpring- Boot% E2% 80% 95% E3% 80% 8CSpring-Framework% E3% 80% 8D% E3% 81% A7% E7% B0% A1% E5% 8D% 98Java% E3% 82% A2% E3% 83% 97% E3% 83% AA% E9% 96% 8B% E7% 99% BA-I% E3% 83% BB-BOOKS / dp / 4777518655) Wiedereinführung in Spring-DI (Abhängigkeitsinjektion) DI / DI-Container, verstehst du richtig ...?
Recommended Posts