[JAVA] À propos de DI of Spring ②

Objectif de cet article

À propos de Spring DI ① Est une continuation de

Portée de cet article

Traite principalement de la configuration

Qu'est-ce que la configuration?

** Fichier de définition de bean **

une fonction

--Il agit comme un pont entre le bean et le conteneur DI, qui définit quelle instance et quelle valeur initiale passer au conteneur DI.

Configurationの概略.jpg

type

** Configuration basée sur Java **

JavaConfig.java


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HogeConfig {
	@Bean
	HogeService hogeService() {
		return new HogeService():
	}
	
	@Bean
	AAABean aAABean() {
		return new AAABean(hogeService());
	}
	
	@Bean(name = "bBean")
	BBBBean bBBBean() {
		return new bBBBean();
	}
}

** Configuration basée sur XML **

xmlConfig.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http;//www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="hogeService" class="jp.co.hogeProgram.HogeService" />
    
    <bean id="aAABean" class="jp.co.hogeProgram.AAABean">
        <constructor-arg ref="hogeService"/>
    </bean>

    <bean id="bBean" class="jp.co.hogeProgram.BBBBean>
        <constructor-arg value="aaa"/>
    </bean>
</beans>

--Définissez un bean à l'intérieur de l'élément bean

Puisqu'il est nécessaire d'écrire la définition pour chacun des deux ci-dessus autant que le nombre de beans, cela prend du temps, il est donc courant d'effectuer DI en combinant les bases d'annotations suivantes.

** Configuration basée sur les annotations **

Bean

Hoge.java


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Hoge {
	
Câblage automatique
En décrivant cette annotation, FugaService récupérera automatiquement le bean du conteneur DI.
	@Autowired
	public Hoge(FugaService fuga);
	
Décrivez le processus
}

Classe de configuration (xml omis) Dans ce cas, recherchez une classe sous jp.co.hoge

AppCongig.java


import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("jp.co.hoge")
public class AppConfig {

}

--La classe avec l'annotation @Component peut être automatiquement définie dans le conteneur DI par "Analyse des composants". C'est ce qu'on appelle le "câblage automatique"

--Il existe plusieurs annotations en fonction du rôle de la classe, telles que @Service et @Component, mais c'est fondamentalement la même chose que @Component.

Aperçu de la prochaine fois

Je prévois de faire une association de haricots

Recommended Posts

À propos de DI of Spring ①
À propos de DI of Spring ②
À propos du printemps ③
À propos des annotations liées à Spring DI
A propos de la liaison de l'annotation Spring AOP
À propos de Spring AOP
À propos de Spring AOP
[Java] Spring DI ③
À propos de l'affichage initial de Spring Framework
[Spring] Pièges de BeanUtils.copyProperties
À propos de disconnect () de HttpURLConnection
Résumé de ce que j'ai appris sur Spring Boot
À propos du guide de démarrage officiel de Spring Framework
À propos de l'authentification Spring Security
Résumé de Spring Framework - À propos de DI
À propos de Bean et DI
À propos de la sélection d'OpenJDK
Première botte à ressort (DI)
A propos de Spring AOP Pointcut
À propos de form. ○○ de form_with
Présentation de Spring AOP
Les bases du printemps ~ Édition DI ~
[Pour les débutants] DI ~ Les bases de DI et DI au printemps ~
À propos de la gestion de Null
[Notes personnelles] À propos du framework Spring
À propos des instances Java
À propos du fonctionnement simple de Docker
À propos de l'erreur de contexte Spring Framework
À propos de la comparaison de taille de compareTo
À propos des types de couverture de code
Introduction à Spring Boot ① ~ DI ~
Mémorandum sur LOD.
[Java] Fonctionnement de Spring DI
À propos de la correspondance partielle du sélecteur
À propos de la fonction de Spring Boot en raison de différentes versions
Accélérez les tests des validateurs qui nécessitent DI dans Spring Boot
Saisissons l'image de fonctionnement (atmosphère) du conteneur DI de Spring
À propos du comportement de ruby Hash # ==
Mémorandum lorsque Spring Boot 1.5.10 → Spring Boot 2.0.0
Spring Framework 5.0 Résumé des principaux changements
À propos des bases du développement Android
À propos de Biocontainers fastqc et Java
À propos de Lambda, Stream, LocalDate de Java8
À propos de la gestion des erreurs de la fonction de commentaire
[Rails] À propos de la mise en œuvre de la fonction similaire
À propos du rôle de la méthode initialize
[Java] Spring DI ④ --Gestion du cycle de vie
À propos de removeAll et de retentionAll de ArrayList
Pensez aux 7 règles d'Optionnel
À propos =
À propos du téléchargement d'images de jsp (servlet)
À propos du cache disque de la série Glide 4
Explique les objets Ruby Array
À propos des erreurs lors de la mise en œuvre de la validation du printemps
Filtrer le résultat de BindingResult [Spring]
À propos du niveau de journalisation de java.util.logging.Logger
Mémo personnel Caractéristiques de Spring Boot (principalement du point de vue DI)