De nos jours, les frameworks sont utilisés lors de la réalisation de projets. Un framework très courant est désormais
SSH(Struts+SpringMVC+Spring+Hibernate),SSM(Struts/springMVC+Spring+Hibernate)
Dans mon récent projet également, le framework utilisé est easyUI+SpringMVC+EJB+hibernate. Un meilleur découplage et une meilleure superposition peuvent être résolus sans votre framework. Pourquoi n'avez-vous pas besoin d'autant de frameworks ?
Et maintenant la couche de contrôle de nombreux projets Web dans le entreprise Le cadre technique a été migré de struts2 vers springMVC Pourquoi choisissons-nous des frameworks comme struts2 ou springMVC lorsque nous faisons du développement Web Java maintenant, au lieu d'utiliser des technologies comme servlet plus jsp ?
Surtout maintenant que les pages frontales de notre Web sont développées à l'aide de langages de modèles tels que Velocity, abandonnant jsp, quels types d'avantages ce choix apportera-t-il à notre développement Web Java ? Avec cette idée, j'ai découvert une nouvelle question : pourquoi de nombreux développeurs Java au niveau de l'entreprise choisissent-ils désormais le framework Spring ? Qu'apporte le framework Spring aux applications que nous développons ?
Après y avoir réfléchi si profondément, je n'avais vraiment pas envie de comprendre. Il m'a semblé difficile de trouver une réponse complètement convaincante. Au final, j'ai découvert que ces technologies me semblaient familières. avec et couramment utilisés étaient en fait Il y a encore beaucoup de choses qui me paraissent étranges et déroutantes. Ces choses étranges et déroutantes sont également la clé pour savoir si je peux les utiliser à un niveau supérieur. Cependant, après tant d'années d'accumulation de technologies telles. comme les struts2 et le ressort sont devenus assez grands et complexes, ils sont très larges. Bien que je les utilise depuis longtemps, il existe encore de nombreuses technologies que je ne connais pas et que je ne connais pas bien. >L'utilisation de frameworks présente un avantage très général : premièrement, cela peut accélérer le processus de développement, la réutilisation du code dans des projets similaires permettra aux développeurs d'économiser beaucoup de temps et d'énergie. Le framework fournit des modules prédéfinis pour effectuer des tâches de codage fastidieuses.
Cet avantage s'applique à n'importe quel framework Très applicable. Mais que se passe-t-il si vous y réfléchissez plus profondément
En fait, il existe de nombreux excellents frameworks dans les logiciels. un type de framework dont la caractéristique est qu'il est basé sur une technologie existante, un framework technique qui offre les mêmes fonctions métiers que la technologie existante. Ce nouveau framework technique est plus simple à utiliser, plus robuste et plus puissant que la technologie d'origine.
Par exemple, le téléchargement de fichiers renvoie un format de fichier spécial au navigateur. À l'heure actuelle, il n'est pas très pratique d'utiliser le développement de servlets. Il existe un autre problème dans le développement de servlets qui peut être souvent négligé, à savoir la conversion de type. les données demandées et la transmission du protocole HTTP. Ils sont tous sous forme de texte, et ce sont également des types de texte après avoir été analysés par le conteneur Web. Si nous rencontrons des types tels que des devises, des nombres et des dates, nous devons les convertir en fonction. situation réelle. Si la page transmet beaucoup d'informations, nous devons effectuer de nombreuses conversions de type. Ce type de travail n'a aucun contenu technique, est un travail manuel et peut facilement conduire à des erreurs de programme.
Dans le même temps, le développement d'entreprise de Java est entièrement réalisé autour des JavaBeans, et les données converties en type doivent être encapsulées dans les JavaBeans correspondants. Ce type de contournement n'est certainement pas une bonne chose pour le projet. développement, c'est donc l'ancien Struts1 qui a trouvé une solution à ce problème, qui consiste à définir un objet DTO (objet de transfert de données), qui est spécifiquement responsable de faire de telles choses. Cependant, dans struts2, toute l'action qui remplace le servlet lui-même est. un javanais.
Une caractéristique technique du développement d'entreprise Java est l'utilisation de javabeans. L'une des caractéristiques de struts2 est que la classe d'opération qu'il remplace est un javabean typique. Premièrement, le framework struts2 convertit et encapsule les données transmises par. Enfin, les informations de la requête sont encapsulées dans les propriétés de ce javabean, afin que nous puissions éviter les problèmes gênants de conversion de type et d'encapsulation lors du développement de programmes Web. J'ai mentionné plus tôt que les servlets traditionnels sont définis selon le protocole http, et cela. sera basé sur votre méthode Request (méthode post ou get) pour gérer les demandes des utilisateurs.
Mais pour un développeur de programme, une requête, en particulier une URL, est en fait une fonction fournie par le serveur au monde extérieur, ou une action externe côté serveur. Si Lorsque nous utilisons un servlet pour développer des programmes, nous devons convertir les actions http en actions commerciales spécifiques, ce qui rend le développement du programme fastidieux et augmente la difficulté du développement. Par conséquent, struts2 remplace le javabean du servlet et bloque la méthode de requête http. Concernant la conversion d'actions commerciales spécifiques, chaque méthode en Javabean peut. correspondent à chaque requête URL un à un, ce qui réduira inévitablement la difficulté de développement.
Une autre fonction de Servlet est de construire l'objet de réponse afin que la page puisse obtenir la réponse correcte. En fait, un navigateur moderne est un outil multimédia qui peut être affiché dans le texte. Les différences de ressources entraîneront des différences dans les messages de réponse http. Si nous utilisons le développement de servlets, nous devons utiliser un traitement codé en dur dans le programme Java en fonction des différentes ressources. Un tel programme est difficile à réutiliser, et si le programmeur dispose d'un programme Java. Certaines exigences en ressources, un traitement et une compréhension insuffisants entraîneront des problèmes. Struts2 sépare cette logique du programme Java sous forme de fichiers de configuration et utilise des méthodes de configuration pour une gestion unifiée. Cette approche est similaire à la méthode AOP de Spring, de sorte que les résultats sont traités. La méthode est plus unifiée et plus facile à gérer. Elle améliore également la robustesse du programme et réduit la difficulté de développement.
Le servlet dans le modèle de développement MVC est la couche C, qui est la couche de contrôle. La couche de contrôle est comme l'aigle russe à deux têtes (une tête regarde à l'est et l'autre à l'ouest), et l'autre tête. regarde vers la couche M, couche modèle Regardez, regardez la couche de vue de la couche V. La couche modèle est également écrite en Java et la couche de contrôle est également développée dans un langage côté serveur. Il n'y a donc pas de barrière naturelle. à la communication entre la couche M et la couche C, mais elle est différente de la couche de vue de la couche V. Oui, il s'agit d'une communication multilingue pour le navigateur, elle ne comprend que le html, le javascript et le css. dans le langage java, mais pour que les choses côté serveur soient comprises et acceptées par le navigateur, nous allons placer les informations de réponse du serveur sur la page.
Par conséquent, une technologie est nécessaire pour convertir les informations Java en pages HTML. Il s'agit de la technologie jsp fournie dans la spécification javaEE. Jsp est en fait une technologie côté serveur plutôt qu'une technologie côté client, mais elle semble. Comme plus proche de la technologie HTML, le premier développement de jsp consistait à écrire du code Java directement dans la page. Tout le monde connaît les inconvénients de cela. Plus tard, la spécification JavaEE a fourni une technologie de balise personnalisée, utilisant une méthode similaire aux balises HTML pour analyser le code Java. le framework struts2 fournit un ensemble complet de technologies de balises personnalisées, ce qui peut sembler peu, mais son effet est extraordinaire, car la raison pour laquelle les balises personnalisées sont appelées personnalisées est que chacun peut les définir par lui-même s'il n'y a pas de spécification. Il y aura inévitablement de la confusion, et un ensemble complet de balises personnalisées est un projet systématique. Un ensemble complet de balises personnalisées équivaut à définir nous-mêmes un nouveau langage de développement. Lorsque les programmeurs entendront cela, ils comprendront certainement comment développer un ensemble de balises personnalisées. La charge de travail et la difficulté de développement de balises personnalisées complètes sont inimaginables, et les balises personnalisées sont étroitement liées à la couche de contrôle, ce qui ajoute une autre dimension à la difficulté. Par conséquent, les balises personnalisées fournies par struts2 apporteront de grands avantages au développement commercial. un saut qualitatif.
Il existe deux technologies importantes dans Servlet : les auditeurs et les filtres. Il existe relativement peu de scénarios dans lesquels les auditeurs sont utilisés dans le développement Web. Ils ne sont utilisés que dans certaines situations très particulières. Ils peuvent être ignorés dans la plupart des développements Web. , l'écouteur le plus couramment utilisé peut être l'écouteur pour la création et la destruction de ServletContext est l'objet global de l'ensemble de l'application Web. Il est donc lié au cycle de vie de l'application Web. application.Les informations globales de l'application sont initialisées et détruites, comme l'opération d'initialisation du conteneur Spring. Ce qui est plus intéressant, c'est le filtre. Il y a un intercepteur dans struts2. Ils ont la même fonction et sont utilisés pour intercepter les requêtes. Parce que les intercepteurs sont une fonction unique de struts2, l'utilisation d'intercepteurs dans struts2 est naturellement plus pratique que l'utilisation de filtres. , la technologie utilisée par l'intercepteur est plus avancée que le filtre, car l'intercepteur utilise la technologie de réflexion, de sorte que l'intercepteur intercepte une zone plus grande, a une plus grande capacité à contrôler les demandes et les tâches qu'il peut accomplir seront plus colorées.
La première fois que je suis entré en contact avec struts2, c'était dans le système gxpt. Quelqu'un m'a dit que l'un des objectifs de la conception de struts est de bloquer le fonctionnement des objets de requête et de réponse dans la couche de contrôle, car ces deux-là. Les fils du protocole http provoqueront des idées confuses dans le développement Web, mais dans le développement réel, j'utilise souvent ces deux objets inconsciemment. Il y a trop de mécanismes de réflexion utilisés dans struts2, en particulier l'utilisation d'annotations pour la configuration. L'efficacité d'exécution de la réflexion en Java est très faible. L'utilisation directe de servlets améliorera certainement l'efficacité d'exécution des applications Web. En fait, c'était difficile à faire car je ne pouvais pas utiliser de manière flexible la technologie Spring dans les servlets à cette époque.
La technologie Spring peut être considérée comme la technologie la plus importante dans le développement d'entreprise Java, mais il est vraiment difficile de vraiment comprendre le rôle et l'importance de Spring. La compréhension de Spring par beaucoup de gens reste en fait au stade de l'utilisation (Pour. exemple : les transactions déclaratives sont faciles à utiliser, etc.), l'environnement écologique de la technologie Spring d'aujourd'hui est spectaculaire, Spring est complet et son contenu n'est rien de moins que son langage Java d'origine, et Spring est si grand que les cadres sont tous construits sur Technologies IOC et AOP Ce n'est qu'en comprenant profondément ces deux technologies que nous pourrons comprendre pourquoi le cadre Spring peut contenir tant de choses.
Le premier est ioc. La première explication de la technologie ioc est appelée inversion de contrôle. Une autre explication est l'injection de dépendances. Ces deux noms sont difficiles à comprendre littéralement, mais lorsque vous comprendrez ses principes, vous découvrirez avec quelle précision ils sont. sont décrits. L'essence de la technologie IOC est la technologie de création d'objets. En d'autres termes, c'est la technologie d'instanciation d'une classe en objet. En Java, l'instanciation d'une classe se fait via le mot-clé new. Un nouvel objet d'instance sera généré. Faire cela Cela semble très inutile, et parfois ce genre de gaspillage est assez dangereux, car lors du développement de programmes, nous n'avons souvent besoin que d'une certaine classe qui ne peut produire qu'un seul objet d'instance. pour utiliser le mode singleton. De plus, en mode conception, nous pouvons également passer La méthode factory génère des objets. Les personnes qui ont utilisé spring le sauront lorsqu'elles verront le texte ci-dessus. La définition des beans dans spring correspond au contenu ci-dessus. one-to-one.L'attribut scope single génère des objets singleton et le prototype génère de nouveaux objets.La méthode factory génère des objets.On peut dire que les beans de Spring sont des outils pour fabriquer des objets. En programmation orientée objet, un objet équivaut à afficher une entité dans la vie.
Par exemple, nous avons un objet qui sert à effectuer des opérations de chasse. Ensuite, l'objet de chasse contient deux objets auxiliaires : des personnes et des armes. . Uniquement des personnes et des armes L'arme reçoit l'objet de chasse, afin que l'objet de chasse puisse terminer l'opération de chasse. Cependant, construire un objet d'une personne et d'une arme à feu n'est pas aussi simple qu'il y paraît. Par exemple, pour créer une arme à feu, nous avons besoin de métal, de machines-outils et de balles, et les machines-outils et les balles sont deux nouveaux objets. Ces objets sont imbriqués l'un par l'autre et liés les uns aux autres. Imaginez à quel point c'est compliqué de construire une arme à feu. objet en code java. Si ce que nous voulons construire n'est pas simple L'objet pistolet est un porte-avions plus complexe, donc le coût de construction de cet objet est inimaginable. Comment éliminer l'imbrication et l'interdépendance de cet objet ?
Spring fournit un moyen. De cette façon, Spring fournit un conteneur. Nous définissons les dépendances de chaque objet dans le fichier XML, et le conteneur termine la construction de l'objet lorsque nous avons besoin d'utiliser un certain objet. dans notre code java Il peut être obtenu à partir du conteneur lorsqu'il est instancié, puis l'opération de construction de l'objet est prise en charge par le conteneur spring, on l'appelle donc inversion de contrôle. La signification de l'inversion de contrôle est que la fonction. La construction d'objets dans le programme Java est prise en charge par le conteneur. L'injection de dépendances signifie que lorsqu'un programme souhaite utiliser un objet, le conteneur l'injectera dans le programme.
Dans le développement Java, nous voulons utiliser les fonctions fournies par une certaine classe. L'une consiste à construire une nouvelle classe et la nouvelle classe hérite de la classe. L'autre consiste à définir une certaine classe dans In. la nouvelle classe, une relation d'association est établie entre les deux classes. Le conteneur ioc de Spring implémente cette relation d'association (rappelez-vous, ce n'est pas une relation d'héritage). Alors, quelles sont les façons d'attribuer une certaine classe à la nouvelle classe ? Généralement, il n'en existe que deux types : l'un via le constructeur et l'autre via la méthode setXXX. Ce sont les deux méthodes d'injection standard utilisées par le conteneur Spring.
Qu'il s'agisse de la méthode d'héritage mentionnée ci-dessus ou de la méthode d'association, ce sont en fait des méthodes de développement pour améliorer les capacités de l'objet cible. Il existe un mode proxy dans le modèle de conception. et le mode association.Le mode agent est une synthèse du mode héritage et du mode association. Cependant, la fonction de cette synthèse n'est pas de résoudre le problème de l'injection d'objet, mais de trouver une nounou ou une secrétaire pour l'objet d'opération spécifique. C'est la même chose que le patron n°2 du roman. Ce leader n°2 représente l'objet d'instance spécifique vers le monde extérieur. L'entrée et la sortie de l'objet d'instance se font par ce leader n°2, car l'objet d'instance spécifique. est le leader n°1, et le leader n°1 doit faire de grandes choses, donc certaines tâches transactionnelles et répétitives telles que préparer le thé et organiser les voitures n'ont pas besoin d'être dérangées par le chef n°1, mais sont gérées par le Tête n ° 2. C'est l'idée d'AOP. AOP résout les aspects transactionnels du développement de programmes et n'a rien à voir avec les problèmes de base, mais ces problèmes sont nécessaires à la réalisation de scénarios commerciaux. aop est aussi un moyen de sauvegarder du code.
L'essence de la technologie de base de Spring est un mécanisme de communication. Spring fait toujours de son mieux pour maintenir la circulation des informations entre les deux parties, tout en réduisant les coûts de communication des deux parties. qui est bon en communication Ce doit être le leader de l'entreprise. Un leader bon en communication peut mobiliser l'enthousiasme de diverses ressources. Un leader bon en communication sera ouvert à toutes les rivières et se laissera suivre par toutes sortes de personnes. Le ressort d'aujourd'hui est donc une grande boîte, tout peut être installé à l'intérieur.
Le printemps est très similaire à une banque. Il ne peut pas créer directement de richesse matérielle, mais toutes les ressources doivent circuler à travers elle. Il peut contrôler la direction du développement économique. Le rôle de Spring doit être présenté comme un découplage entre les programmes, Spring peut réduire le couplage entre différents modules. La raison en est que dans le développement de programmes, la communication des informations entre les différents modules s'effectue par le transfert d'objets et le transfert fluide des objets doit être effectué. raisonnable.En construisant bien les objets et en gérant la méthode de construction des objets, vous pouvez bien gérer le transfert d'objets. C'est l'avantage que Spring apporte à la conception de l'architecture système.
Recommandations d'apprentissage associées : Tutoriel de base Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!