[JAVA] 1. Démarrez Spring Framework à partir de 1

Qu'est-ce que Spring Framework

En premier lieu, l'existence d'un framework est indispensable pour le développement d'applications Web Java. L'un des frameworks les plus utilisés est ce framework Spring. Spring a une longue histoire et a été amélioré en tant qu'open source depuis la sortie du premier Spring en 2002. La principale raison pour laquelle Spring est populaire est qu'il est évalué pour sa facilité à modifier les spécifications du système, la facilité des tests de programmes, l'extensibilité et la stabilité du système.

Aperçu du printemps

Spring peut être utilisé pour développer une large gamme d'applications et de logiciels en fonction de l'utilisation du module. Parmi eux, si vous en mentionnez certains familiers qui sont souvent utilisés dans le travail réel, etc. ・ Projet I / O · Développement d'applications ・ Développement d'applications Web ・ Développement logiciel sur le cloud ・ Logiciel de gestion de base de données ・ Développement d'applications Android Vous pouvez voir qu'il est utilisé dans une grande variété de genres, pour n'en citer que quelques-uns.

Avantages du printemps

Quelques avantages spécifiques du printemps ** ・ Environnement de développement de haut niveau avec conteneur DI et framework AOP ** (Article de référence AOP) ** ・ Modules abondants ** ** ・ Assistance RESTful ** (Article de référence sur l'API RESTful) ** ・ IDE (STS) pour Spring est disponible gratuitement ** ** ・ Support NoSQL de base de données à grande échelle ** (Article de référence NoSQL)

Inconvénients du printemps

Il n'y a pas seulement des avantages mais aussi des inconvénients. Dans l'ensemble, il existe de nombreux inconvénients en termes de coûts d'apprentissage. ** ・ L'échelle du cadre est grande et il est difficile de saisir l'ensemble ・ Il est difficile d'utiliser correctement le conteneur DI. ・ Des connaissances avancées en Java sont nécessaires pour bien comprendre **

Fonctions typiques de Spring

Comme mentionné ci-dessus, je vais approfondir certaines des fonctionnalités intéressantes de Spring.

Conteneur DI

Qu'est-ce que DI (Dependency Injection) en premier lieu? Quand j'enquête, je vois souvent «injection de dépendance», mais même si j'écoute autant, je n'en comprends pas le sens. En regardant le wiki, il est écrit comme suit.

Élimine les dépendances entre les composants du code source du programme C'est un modèle logiciel qui permet l'injection avec un fichier de paramètres externe. Lors de l'écriture d'un programme utilisant l'injection de dépendances, les relations entre les composants sont décrites à l'aide d'une interface. Ne spécifiez pas de composant spécifique. En décrivant le composant à utiliser dans un fichier externe, la dépendance entre les composants peut être éliminée du code source.

Ce que je veux faire, c'est ** "Relions vaguement les classes et laissons sortir les données réelles" **.

Avantages de DI

Le composant A et le composant B étant décrits dans le fichier de réglage, Élimine le besoin de définir des relations au sein des composants. par ça, ** Si le composant A n'est pas terminé, une erreur de compilation se produira et le composant B ne pourra pas être créé ** Le développement peut être effectué sans l'influence de l'ordre de travail.

Cela facilite également la réalisation de tests unitaires sur les classes. L'un des problèmes lors de l'écriture du code de test est le problème de dépendance. Dans l'exemple ci-dessus, pour tester le composant B, vous devez étendre le test au composant A. En utilisant un objet fictif qui implémente l'interface dans le conteneur DI Il vous permet de tester uniquement la classe que vous souhaitez tester indépendamment de l'achèvement de la classe elle-même ou des bogues. De plus, même si le composant A est modifié, le code de test du composant B peut être utilisé tel quel.

Exemple d'utilisation DI

Le fichier de configuration est au format xml comme d'habitude. -Servlet-context.xml

1<context:annotation-config />
2<context:component-scan base-package="com.example.controller" />

com.example.controller Définissez toutes les classes suivantes afin qu'elles puissent être DI.

@Controller
public class ExampleController {

    @Autowired
    private ExampleService exampleService ;

    @RequestMapping('/')
    @ResponseBody
    public String find(String itemId) {
        ItemEntity item = exampleService.findItemData(itemId);
        return item.getItemName();
    }
}

DI est effectué en ajoutant l'annotation @Autowired à ExampleService. Cela vous permettra d'utiliser l'objet sans nouveau.

Spring MVC et accès aux données

Il s'agit d'un cadre pour le développement d'applications Web dans Spring et utilise MVC comme modèle architectural. Comme son nom l'indique, il s'agit d'un cadre permettant à la couche contrôleur de réaliser MVC. Inutile de dire, comme un aperçu de MVC

** ・ Modèle: Modèle. Processus de logique métier (la fonction principale de l'application) -View: Voir. Afficher les informations -Contrôleur: contrôleur. Accepte les événements des utilisateurs et contrôle le traitement et l'affichage **

Dans Spring, le fonctionnement du modèle et la valeur passant de View sont réalisés en fonction de la classe de contrôleur. En outre, la classe de contrôleur ou la classe logique (généralement à travers la limite de transaction) effectue des appels à la classe de service de couche de domaine.

Annotation

Au printemps, le traitement est clairement divisé par diverses annotations. Il existe des annotations Spring "@Component, @Service, @Repository, @Controller" et ainsi de suite.

@Controller Accordez-le à la classe de couche contrôleur dans Spring MVC. Donnez simplement ceci et Spring reconnaîtra cette classe comme une classe de contrôleur.

Dans Spring MVC, lorsqu'une certaine URL est demandée, la requête et la méthode de traitement Java sont mappées dans le flux de "l'appel de la méthode init () de la classe A".

Non seulement l'URL, mais également la condition qui détermine la méthode pour effectuer ce processus en-tête, cookies, méthodes http (GET, POST, etc.), paramètres, etc. Il est possible d'utiliser presque toutes les informations envoyées par le navigateur. Il est possible de transmettre les valeurs ci-dessus avec des annotations.

Ajoutez également l'annotation @ModelAttribute à la méthode dans la classe de contrôleur. Il est possible d'ajouter la valeur de retour de la méthode à Model et de la renvoyer dans la vue implémentée par JSP etc.

@Service Il est affecté à la classe de couche de service (logique métier, etc.). Il est principalement appelé du côté contrôleur pour appeler des classes qui accèdent à des bases de données telles que DAO.

@Repository Affectez à la classe de couche de données (classe d'accès DB). Il est appelé à partir de services tels que les classes dites DAO pour accéder à la base de données.

@Component Donnez-le à la classe que vous souhaitez enregistrer dans le conteneur Spring DI. Vous pourrez obtenir une instance du composant annotée sous le balayage des composants avec @Autowired.

la prochaine fois

C'est la fin de l'article n ° 1 du printemps. La prochaine fois, je me pencherai sur diverses annotations et les fonctions que j'ai écrites jusqu'à présent. Nous allons en fait créer un petit système.

Recommended Posts

1. Démarrez Spring Framework à partir de 1
[Spring Framework] Division de la configuration
Prise en charge multilingue de Spring Framework
À propos du guide de démarrage officiel de Spring Framework
Résumé de Spring Framework - À propos de DI
Un record d'étude du Spring Framework à partir de zéro
[Notes personnelles] À propos du framework Spring
Essayez Spring Boot de 0 à 100.
Spring + Gradle + Java Quick Start
Série de mémos d'auto-apprentissage Spring Framework_1
À propos de l'erreur de contexte Spring Framework
Spring Framework 5.0 Résumé des principaux changements
cadre de printemps Mémo d'étude simple (2): AOP
Outils Spring Framework pour développeur Java
Java, interface pour partir du débutant
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Contrôleur de cadre de test Spring avec Junit
Spring Boot à partir de zéro Partie 2
Spring Boot à partir de zéro Partie 1
Appeler Spring Management Bean de Pojo
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
Mémo généré automatiquement par swagger condegen (spring) -1
Introduction de l'authentification de base à Heroku [Spring Framework]
Spring Boot 2.0.0 ne démarre pas le Tomcat intégré
Modifications majeures liées au test Spring Framework 5.0
XML de définition de bean Spring Framework: balise personnalisée
L'histoire de la transition de Spring Boot 1.5 à 2.1
Pourquoi le printemps est considéré comme un cadre léger
Notes de l'étude Spring Framework [Partie 1] Conteneur DI
Démarrez le développement d'applications Web avec Spring Boot
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
À propos de l'affichage initial de Spring Framework
Transition de Struts2 à Spring MVC (contrôleur)
Publier sur Slack à partir de Play Framework 2.8 (Java)
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
Changements majeurs dans la fonctionnalité de base de Spring Framework 5.0
Fonctionnalités du framework Spring pour les développeurs Java