[JAVA] Introduction à Spring Boot ① ~ DI ~

En faisant progresser l'apprentissage du printemps, je résumerai les informations que j'ai recherchées dans le matériel pédagogique et en ligne. Je suis presque inexpérimenté dans le cadre, donc c'est super introductif.

Avant de commencer

Tout d'abord, qu'est-ce que "Spring Boot"? L'échelle de "Spring Framework" est devenue énorme, et il est devenu difficile de comprendre comment l'utiliser. C'est là que "Spring Boot" est entré en jeu.

C'est un framework qui permet de créer et d'exécuter rapidement des applications basées sur Spring en tirant parti de ces fonctionnalités. Veuillez comprendre qu'il s'agit d'un moyen simple de créer une application à l'aide de "Spring Framework".

Maintenant, acquérons les connaissances nécessaires pour créer une application Spring une par une.

DI(Dependency Injection)

DI est «injection de dépendance» en japonais. En termes de sens, il doit être compris comme «injecter un objet». En injectant des dépendances (objets) de l'extérieur de la classe, il a pour but de résoudre les dépendances entre les classes.

Conteneur DI

C'est un cadre pour réaliser DI. Créez et gérez des instances via des conteneurs DI. Outre la résolution des dépendances de classe, vous pouvez également obtenir les effets secondaires suivants:

-La portée de l'instance peut être contrôlée. → Que ce soit pour générer à chaque fois ou pour en faire une seule tonne -Le contrôle des événements est possible pendant le cycle de vie de l'instance. → Traitement des événements au moment de la génération et de la destruction, etc. -Le traitement commun peut être intégré. -Parce que les objets sont faiblement couplés, il est plus facile de tester.

Définition du haricot

Définit un fichier de configuration pour le conteneur DI afin de gérer l'instance. Il existe trois méthodes de réglage.

Cette fois, nous examinerons les paramètres de l'annotation.

Annotation

La définition du bean se fait en ajoutant une annotation à la source JAVA. Annotations importantes

@Component @ComponentScan @Autowired

Sera.

ComponentScan

Il s'agit d'une annotation qui enregistre la classe avec l'annotation Component dans le conteneur DI. Même package que la classe avec l'annotation ComponentScan Analyse les classes suivantes et les enregistre dans le conteneur DI.

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 exécute @Configuration, @EnableAutoConfiguration, @ComponentScan. Dans l'exemple de code, les annotations sont intentionnellement ajoutées séparément.

Component

Attachez-le à la classe pour l'injecter. Si vous ajoutez une annotation de composant à une classe, le conteneur DI gérera la classe pour vous.

SampleA.java


@Component
public class SampleA {
		
	public String getClassName() {
		return this.getClass().getName();
	}
}

Un composant qui ne renvoie que son propre nom de classe.

Autowired

Attachez-vous au champ à injecter. Le conteneur DI recherche les objets correspondants et les injecte dans les champs annotés avec Autowired.

SampleB.java


@Component
public class SampleB {

	@Autowired
	private SampleA sampleA;
	
	public void testDi() {
		System.out.println("called " + sampleA.getClassName());
	}
}

Faites injecter l'instance sampleA à partir du conteneur DI. Vous pouvez maintenant obtenir le nom de classe de sampleA.

Puisque SampleB doit également être appelé par la méthode main, il est enregistré en tant que composant.

point important

Les cas suivants ne semblent pas être des DI.

・ DI statique -DI dans l'instance nouvellement générée

Cette fois, car il est exécuté par la méthode principale

SpringSampleApplication.java


@Autowired
private static SampleB sampleb;
/*réduction*/
sampleb.testDi();

Ample

SpringSampleApplication.java


SampleB sampleb = new SampleB();
sampleb.testDi();

J'ai essayé, mais les deux n'ont pas bien DI et j'ai eu une NullPointerException.

Remarques

En plus de Component, certaines annotations peuvent être analysées. Utilisons chaque annotation correctement en fonction du rôle de la classe.

@Controller(@RestController) → Contrôleur MVC cible @Service → Ciblez les couches de service telles que la logique métier @Repository → Classes cibles qui accèdent à DB telles que DAO

Matériel de référence

[Premier démarrage de printemps](https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AESpring- Démarrage% 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) Réintroduction à spring-DI (injection de dépendances) Conteneur DI / DI, comprenez-vous bien ...?

Recommended Posts

Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Introduction à Spring Boot, partie 1
[Introduction à Spring Boot] Vérification de la validation du formulaire
Première botte à ressort (DI)
Introduction à Spring Boot + In-Memory Data Grid
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Introduction à Ratpack (7) --Guice & Spring
[Introduction à Spring Boot] Soumettez un formulaire à l'aide de thymeleaf
Comment utiliser ModelMapper (Spring boot)
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Introduction à Ruby 2
Introduction à Spring Boot x Open API ~ Open API créée avec le modèle d'écart de génération ~
Spring Fox ① Introduction
Défi Spring Boot
L'histoire de la transition de Spring Boot 1.5 à 2.1
Introduction à web3j
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Introduction à Micronaut 1 ~ Introduction ~
[Java] Introduction à Java
Introduction à la migration
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Forme de botte de printemps
Introduction à Java
Spring Boot Rappelez-vous
gae + botte à ressort
Introduction à Doma
DI SessionScope Bean dans le filtre Spring Boot 2
Comment diviser un fichier de message Spring Boot
[Java] Spring DI ③
Ajoutez une botte de printemps et un dégradé à éclipse
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Essayez d'implémenter la fonction de connexion avec Spring Boot
Modifications majeures liées au conteneur Spring Framework 5.0 DI
Comment ajouter un chemin de classe dans Spring Boot
Comment se lier avec un fichier de propriétés dans Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Appliquer Twitter Bootstrap 4 à Spring Boot 2 à l'aide de Webjars
[Spring Boot] Comment se référer au fichier de propriétés
Spring Boot - Comment définir le délai d'expiration de la session
Fiche d'apprentissage SPRING BOOT 01
Introduction aux fichiers JAR
Botte de printemps + Heroku Postgres
Introduction à Ratpack (8) - Session
Résumé de Spring Framework - À propos de DI
Rédaction de mémo de démarrage de printemps (1)
Introduction à l'arithmétique des bits
Introduction à Ratpack (6) - Promesse
Introduction à Ratpack (9) --Thymeleaf
Fiche d'apprentissage SPRING BOOT 02
Aide-mémoire Spring Boot2
Introduction à PlayFramework 2.7 ① Présentation
Gestion des exceptions Spring Boot