Maison > Java > JavaQuestions d'entretien > Questions d'entretien sur les nouvelles Java 2020 - Printemps

Questions d'entretien sur les nouvelles Java 2020 - Printemps

王林
Libérer: 2020-06-24 16:49:34
avant
2265 Les gens l'ont consulté

Le but de Spring à utiliser est le suivant : résoudre la complexité du développement d'applications d'entreprise. Spring est un framework léger d'inversion de contrôle et de conteneur orienté aspect. Spring peut configurer et combiner des composants simples dans des applications complexes.

Questions d'entretien sur les nouvelles Java 2020 - Printemps

(Recommandations associées : questions d'entretien Java)

1.Pourquoi utiliser Spring ?

1. Introduction

Objectif : résoudre la complexité du développement d'applications d'entreprise

Fonction : utiliser JavaBean de base au lieu d'EJB et fournir davantage d'applications d'entreprise Fonction

Portée : toute application Java

En termes simples, Spring est un framework de conteneurs léger d'inversion de contrôle (IoC) et orienté aspect (AOP).

2. Léger

Le ressort est léger en termes de taille et de frais généraux. Le framework Spring complet peut être distribué dans un fichier JAR d'une taille d'un peu plus de 1 Mo. Et la surcharge de traitement requise par Spring est négligeable. De plus, Spring est non intrusif : généralement, les objets d'une application Spring ne dépendent pas de classes Spring spécifiques.

3. Inversion de contrôle

Spring favorise le couplage lâche grâce à une technologie appelée Inversion de contrôle (IoC). Lorsque l'IoC est appliqué, les autres objets dont dépend un objet sont transmis passivement, au lieu que l'objet lui-même crée ou trouve des objets dépendants. Vous pouvez considérer IoC comme l'opposé de JNDI : au lieu que l'objet recherche les dépendances du conteneur, le conteneur transmet activement les dépendances à l'objet lorsqu'il est initialisé sans attendre que l'objet le demande.

4. Orienté aspect

Spring fournit un support riche pour la programmation orientée aspect, permettant la séparation de la logique métier des applications et des services au niveau du système (tels que l'audit et la gestion des transactions) Mener un développement cohérent . Les objets d'application implémentent uniquement ce qu'ils sont censés faire - une logique métier complète - rien de plus. Ils ne sont pas responsables (ni même conscients) d'autres problèmes au niveau du système, tels que la journalisation ou la prise en charge des transactions.

5. Conteneur

Spring contient et gère la configuration et le cycle de vie des objets d'application. En ce sens, il s'agit d'un conteneur Vous pouvez configurer la façon dont chacun de vos beans est créé—— Basé. sur un prototype configurable, votre bean peut créer une seule instance ou générer une nouvelle instance à chaque fois que cela est nécessaire - et comment elles sont liées les unes aux autres. Cependant, Spring ne doit pas être confondu avec les conteneurs EJB lourds traditionnels, qui sont souvent grands, encombrants et difficiles à utiliser.

6. Framework

Spring peut configurer et combiner des composants simples en applications complexes. Dans Spring, les objets d'application sont composés de manière déclarative, généralement dans un fichier XML. Spring fournit également de nombreuses fonctions de base (gestion des transactions, intégration de framework de persistance, etc.), vous laissant le développement de la logique applicative.

Toutes ces fonctionnalités Spring vous permettent d'écrire du code plus propre, plus gérable et plus facile à tester. Ils fournissent également un support de base pour divers modules de Spring.

2. Expliquez ce qu'est l'aop ?

AOP (Aspect-Oriented Programming, programmation orientée aspect) peut être considéré comme le complément et l'amélioration de la POO (Object-Oriented Programming, programmation orientée objet). La POO introduit des concepts tels que l'encapsulation, l'héritage et le polymorphisme pour établir une hiérarchie d'objets afin de simuler un ensemble de comportements courants.

Lorsque nous devons introduire un comportement public face à des objets dispersés, la POO est impuissante. En d’autres termes, la POO permet de définir des relations de haut en bas, mais elle ne convient pas pour définir des relations de gauche à droite. Par exemple, la fonction de journalisation. Le code de journalisation a tendance à être réparti horizontalement dans toutes les hiérarchies d'objets, n'ayant rien à voir avec les fonctionnalités de base des objets auxquels il est réparti.

Il en va de même pour d'autres types de code tels que la sécurité, la gestion des exceptions et la persistance transparente. Ce type de code non pertinent dispersé partout est appelé code transversal. Dans la conception POO, il conduit à la duplication d'une grande quantité de code et n'est pas propice à la réutilisation de divers modules.

La technologie AOP est tout le contraire. Elle utilise une technologie appelée « transversale » pour disséquer l'intérieur de l'objet encapsulé et encapsuler les comportements publics qui affectent plusieurs classes dans un module réutilisable et le nommer « Aspect ». .

Le soi-disant "aspect", en termes simples, consiste à encapsuler la logique ou les responsabilités qui n'ont rien à voir avec le métier mais qui sont communément appelées par les modules métier, afin de réduire la duplication de code dans Le système et réduire le couplage entre les modules et faciliter l'opérabilité et la maintenabilité futures.

AOP représente une relation horizontale. Si "l'objet" est un cylindre creux, qui encapsule les propriétés et le comportement de l'objet ; alors la méthode de programmation orientée aspect est comme un couteau tranchant pour ouvrir ces cylindres creux. pour faire passer le message à l'intérieur. La section coupée est ce qu'on appelle « l'aspect ». Puis il a restauré ces sections coupées avec une habileté incroyable, sans laisser de trace.

Grâce à la technologie « transversale », AOP divise le système logiciel en deux parties : les préoccupations centrales et les préoccupations transversales. Le processus principal de traitement des affaires est la préoccupation centrale, et la partie qui a peu de rapport avec lui est la préoccupation transversale.

Une caractéristique des préoccupations transversales est qu’elles surviennent souvent à plusieurs endroits dans la préoccupation centrale et sont fondamentalement similaires partout. Tels que l'authentification des autorités, la journalisation et le traitement des transactions. Le rôle de l'Aop est de séparer les différentes préoccupations du système, en séparant les préoccupations centrales et les préoccupations transversales.

Comme l'a déclaré Adam Magee, architecte de solutions senior chez Avanade, l'idée centrale d'AOP est de "séparer la logique métier de l'application des services communs qui la prennent en charge".

3. Expliquez qu'est-ce que l'ioc ?

IOC est l'abréviation de Inversion of Control, et la plupart des livres le traduisent par « Inversion of Control ».

En 1996, Michael Mattson a proposé pour la première fois le concept d'IOC dans un article sur l'exploration des frameworks orientés objet. Nous avons déjà beaucoup parlé des idées de base de la conception et de la programmation orientées objet, je n'entrerai donc pas dans les détails. En termes simples, cela signifie décomposer des systèmes complexes en objets coopérants. Une fois ces classes d'objets encapsulées, l'implémentation interne est effectuée. transparent vers l'extérieur, réduisant ainsi la complexité de la résolution des problèmes, et peut être réutilisé et étendu de manière flexible.

Le point avancé par la théorie IOC est à peu près le suivant : utiliser un "tiers" pour réaliser un découplage entre des objets ayant des dépendances. Comme indiqué ci-dessous :

Questions dentretien sur les nouvelles Java 2020 - Printemps Comme vous pouvez le constater, en raison de l'introduction du "tiers" au milieu, c'est-à-dire le conteneur IOC, les quatre A, B , C et D Les objets n'ont plus de relation de couplage et la transmission entre les engrenages repose entièrement sur le « tiers ». Les droits de contrôle de tous les objets sont confiés au conteneur IOC « tiers ».

Par conséquent, le conteneur IOC est devenu le noyau clé de l'ensemble du système. Il joue un rôle similaire à une "colle" qui lie tous les objets du système entre eux pour fonctionner sans cette "colle". les objets perdront contact les uns avec les autres, c'est pourquoi certains comparent le conteneur IOC à une « colle ».

Faisons une autre expérience : retirez le conteneur IOC au milieu de l'image ci-dessus, puis jetez un œil à ce système :

Questions dentretien sur les nouvelles Java 2020 - PrintempsCe que nous voyons maintenant L'écran est tout ce que nous devons compléter pour mettre en œuvre l'ensemble du système. À l’heure actuelle, les quatre objets A, B, C et D n’ont aucune relation de couplage et n’ont aucun lien les uns avec les autres.

Dans ce cas, lorsque vous implémentez A, vous n'avez plus besoin de considérer B, C et D, et les dépendances entre objets ont été réduites au minimum. Par conséquent, si les conteneurs IOC peuvent être réalisés, ce sera une chose merveilleuse pour le développement du système. Chaque membre participant au développement n'a qu'à implémenter sa propre classe et n'a rien à voir avec les autres !

4. Quels sont les principaux modules du printemps ?

Le framework Spring a intégré jusqu'à présent plus de 20 modules. Ces modules sont principalement divisés en conteneurs de base, accès/intégration des données, Web, AOP (programmation orientée aspect), outils, messagerie et modules de test, comme le montre la figure ci-dessous.

Questions dentretien sur les nouvelles Java 2020 - Printemps

5. Quelles sont les méthodes d'injection couramment utilisées au printemps ?

Spring implémente l'IOC (Inversion of Control) via DI (Dependency Injection). Il existe trois méthodes d'injection principales :

    Injection de méthode de constructeur
  • Injection Setter
  • Injection basée sur les annotations

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal