Les SpringIOC connaissances pertinentes mis en place à nouveau, de savoir ce que la connaissance est plus important. C'est très simple, nous trouverons les questions d'entrevue pertinentes. Si les questions d'entrevue sont courantes, ce point de connaissance est encore relativement important!
1 qu'est-ce que le printemps?
Spring est un framework de développement open source pour les applications d'entreprise Java. Spring est principalement utilisé pour développer des applications Java, mais certaines extensions visent à créer des applications Web sur la plate-forme J2EE. L' objectif du framework Spring est de simplifier le développement d'applications Java au niveau de l'entreprise et de promouvoir de bonnes habitudes de programmation grâce à un modèle de programmation basé sur POJO.
2 Quels sont les avantages de l' utilisation de Spring Framework?
- Léger : le ressort est léger, la version de base est d'environ 2 Mo.
- Inversion du contrôle : Spring réalise un couplage lâche grâce à l'inversion du contrôle. Les objets donnent leurs dépendances au lieu de créer ou de trouver des objets dépendants.
- Programmation orientée aspect (AOP): Spring prend en charge la programmation orientée aspect et sépare la logique métier des applications et les services système.
- Conteneur : Spring contient et gère le cycle de vie et la configuration des objets dans l'application.
- Framework MVC : le framework WEB de Spring est un framework bien conçu et une bonne alternative au framework Web.
- Gestion des transactions : Spring fournit une interface de gestion des transactions continue qui peut être étendue des transactions locales aux transactions globales (JTA).
- Gestion des exceptions : Spring fournit une API pratique pour convertir des exceptions spécifiques liées à la technologie (telles que celles levées par JDBC, Hibernate ou JDO) en exceptions cohérentes non contrôlées.
3 Quels sont les modules de Spring ?
Simple peut être divisé en 6 modules principaux:
- Coeur
- AOP
- serpent
- DAO
- la toile
- Spring EE
Exemple d' implémentation de 4BeanFactory
La fabrique de bean est une implémentation du modèle de fabrique, qui fournit une fonction d'inversion de contrôle pour séparer la configuration et les dépendances de l'application du code d'application réel .
Avant Spring 3.2, le plus utilisé était XmlBeanFactory, mais maintenant il est abandonné et remplacé par: XmlBeanDefinitionReader et DefaultListableBeanFactory
5 Qu'est-ce que l' injection de dépendance de Spring ?
L'injection de dépendances, un aspect de la COI, est un concept courant et a de multiples interprétations. Le concept est que vous n'avez pas besoin de créer un objet, mais seulement de décrire comment il est créé. Vous n'assemblez pas vos composants et services directement dans le code, mais vous devez décrire quels composants ont besoin de quels services dans le fichier de configuration, puis un conteneur ( conteneur IOC) est responsable de leur assemblage.
6 Quels sont les différents types de COI (injection de dépendance)?
- Injection de dépendance de constructeur : L'injection de dépendance de constructeur est implémentée par le conteneur déclenchant un constructeur de classe, la classe a une série de paramètres, chaque paramètre représente une dépendance par rapport aux autres classes.
- Injection de méthode Setter : L' injection de méthode Setter est qu'après que le conteneur instancie le bean en appelant le constructeur sans paramètre ou la méthode d'usine statique sans paramètre, la méthode setter du bean est appelée, qui implémente l'injection de dépendance basée sur le setter.
- Injection d'usine: elle est restée et rarement utilisée!
7. Quelle méthode d'injection de dépendance recommandez-vous, injection de constructeur ou injection de méthode Setter ?
Vous pouvez utiliser à la fois les méthodes de dépendance, l'injection de constructeur et l' injection de méthode Setter. La meilleure solution consiste à utiliser des paramètres de constructeur pour implémenter des dépendances obligatoires et des méthodes de définition pour implémenter des dépendances facultatives .
8 Que sont les haricots de printemps?
Les beans Spring sont les objets java qui forment l'épine dorsale des applications Spring . Ils sont initialisés, assemblés et gérés par le conteneur Spring IOC. Ces beans sont créés à partir des métadonnées configurées dans le conteneur. Par exemple, il est défini sous la forme de <bean /> dans le fichier XML .
Il existe quatre façons importantes de fournir des métadonnées de configuration au conteneur Spring .
- Fichier de configuration XML.
- Configuration basée sur les annotations.
- Sur la base de la configuration java.
- Configuration Groovy DSL
9 expliquer le cycle de vie des haricots dans le cadre du printemps
- Le conteneur Spring lit la définition du bean dans le fichier XML et instancie le bean.
- Spring remplit tous les attributs selon la définition du bean.
- Si le bean implémente l'interface BeanNameAware, Spring transmet l'ID du bean à la méthode setBeanName.
- Si le bean implémente l'interface BeanFactoryAware, Spring transmet le beanfactory à la méthode setBeanFactory.
- S'il existe des BeanPostProcessors associés au bean, Spring les appellera dans la méthode postProcesserBeforeInitialization ().
- Si le bean implémente IntializingBean, appelez sa méthode afterPropertySet. Si le bean déclare une méthode d'initialisation, appelez cette méthode d'initialisation.
- S'il existe des BeanPostProcessors associés aux beans, les méthodes postProcessAfterInitialization () de ces beans seront appelées.
- Si le bean implémente DisposableBean, il appellera la méthode destroy ().
10 expliquer différentes façons d'assemblage automatique
- no: la méthode par défaut n'est pas d'effectuer l'assemblage automatique et d'effectuer l'assemblage en définissant explicitement l'attribut ref.
- byName: en câblant automatiquement le nom du paramètre, le conteneur Spring a constaté que l'attribut autowire du bean était défini sur byname dans le fichier de configuration, puis le conteneur a tenté de faire correspondre et d'assembler un bean portant le même nom que l'attribut du bean.
- byType :: Par le biais du câblage automatique du type de paramètre, le conteneur Spring a constaté que l'attribut autowire du bean était défini sur byType dans le fichier de configuration, puis le conteneur a tenté de faire correspondre, d'assembler et de bean les attributs du même type. Si plusieurs beans remplissent les conditions, une erreur est levée.
- Constructeur: cette méthode est similaire à byType, mais elle doit être fournie aux paramètres du constructeur. S'il n'y a pas de type de paramètre déterminé du constructeur avec des paramètres, une exception sera levée.
- autodetect: essayez d'abord d'utiliser le constructeur pour assembler automatiquement, si cela ne fonctionne pas, puis utilisez la méthode byType.
Lorsque vous utilisez uniquement des annotations, les annotations utilisent byType par défaut !
11 Quels sont les avantages d' IOC ?
L'injection IOC ou de dépendance minimise la quantité de code d'application. Il rend l'application facile à tester, les tests unitaires n'ont plus besoin de singletons et de mécanismes de recherche JNDI. Un coût minimal et une intrusion minimale permettent un couplage lâche . Le conteneur IOC prend en charge l' initialisation de style affamé et le chargement paresseux lors du chargement des services .
12 Quelles sont les principales méthodes de cycle de vie du bean ? Pouvez-vous les surcharger?
Il existe deux méthodes de cycle de vie de bean importantes . La première est setup , qui est appelée lorsque le conteneur charge le bean. La deuxième méthode est le démontage, qui est appelé lorsque le conteneur décharge la classe.
La balise de haricot comporte deux attributs importants (init-procédé et la méthode de détruire, ). Avec eux, vous pouvez personnaliser vous-même les méthodes d'initialisation et de déconnexion. Ils ont également des annotations correspondantes ( @PostConstruct et @PreDestroy ).
13 Comment répondre à l'intervieweur: Quelle est votre compréhension du printemps ?
14Spring singleton cadre haricots sont sûrs de fil il?
Le framework Spring n'effectue aucune encapsulation multithread des beans singleton. Les problèmes de sécurité des threads et de concurrence des beans singleton doivent être résolus par les développeurs eux-mêmes. Mais en fait, la plupart des beans Spring n'ont pas d'état variable (comme la classe Serview et la classe DAO), donc dans une certaine mesure, le bean Spring singleton est thread-safe. Si votre bean a plusieurs états (tels que les objets View Model), vous devez vous assurer de la sécurité des threads .
La solution la plus évidente consiste à changer la portée du bean polymorphe de "singleton" à "prototype"
15 Quelle est la différence entre FileSystemResource et ClassPathResource ?
Le chemin relatif ou le chemin absolu du fichier spring-config.xml dans votre projet doit être indiqué dans FileSystemResource. Dans ClassPathResource, spring recherchera automatiquement les fichiers de configuration dans ClassPath, donc les fichiers ClassPathResource doivent être placés sous ClassPath.
Si vous enregistrez spring-config.xml dans le dossier src, il vous suffit de donner le nom du fichier de configuration, car le dossier src est celui par défaut.
En bref, ClassPathResource lit les fichiers de configuration dans les variables d'environnement et FileSystemResource lit les fichiers de configuration dans les fichiers de configuration .