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.
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.
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é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.
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.
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.
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
[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