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.
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.
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)
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 **
Comme mentionné ci-dessus, je vais approfondir certaines des fonctionnalités intéressantes de Spring.
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" **.
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.
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.
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.
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.
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