[JAVA] Einführung in Spring Boot ~ ~ DI ~

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.

Bevor du anfängst

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.

DI-Behälter

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.

Bohnendefinition

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.

Anmerkung

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.

wichtiger Punkt

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.

Bemerkungen

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

Referenzmaterial

[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

Einführung in Spring Boot ~ ~ DI ~
Einführung in Spring Boot ② ~ AOP ~
Einführung in Spring Boot Teil 1
[Einführung in Spring Boot] Überprüfung der Formularvalidierung
Erster Frühlingsstiefel (DI)
Einführung in Spring Boot + In-Memory Data Grid
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Einführung in Ratpack (7) - Guice & Spring
[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf
Verwendung von ModelMapper (Spring Boot)
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Einführung in Ruby 2
Einführung in Spring Boot x Offene API ~ Offene API, erstellt mit Generationslückenmuster ~
Spring Fox ① Einführung
Fordern Sie Spring Boot heraus
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Einführung in web3j
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Einführung in Micronaut 1 ~ Einführung ~
[Java] Einführung in Java
Einführung in die Migration
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Spring Boot Form
Einführung in Java
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Einführung in Doma
DI SessionScope Bean im Spring Boot 2-Filter
So teilen Sie eine Spring Boot-Nachrichtendatei
[Java] Spring DI ③
Fügen Sie Frühlingsstiefel und Gradle zur Sonnenfinsternis hinzu
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
So verkleinern Sie das Spring Boot Docker-Image
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Wichtige Änderungen im Zusammenhang mit dem Spring Framework 5.0 DI-Container
So fügen Sie in Spring Boot einen Klassenpfad hinzu
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
Wenden Sie Twitter Bootstrap 4 mithilfe von Webjars auf Spring Boot 2 an
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
SPRING BOOT Lernaufzeichnung 01
Einführung in JAR-Dateien
Frühlingsstiefel + Heroku Postgres
Einführung in Ratpack (8) -Session
Spring Framework Zusammenfassung - Über DI
Schreiben von Frühlingsstiefel-Memos (1)
Einführung in die Bitarithmetik
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
SPRING BOOT Lernprotokoll 02
Spring Boot2 Spickzettel
Einführung in PlayFramework 2.7 ① Übersicht
Spring Boot-Ausnahmebehandlung