Je n'ai pas encore trouvé de définition de haut niveau des haricots de printemps que je puisse comprendre. Je les vois souvent référencés dans la documentation et les livres de Grails, mais je pense que comprendre ce qu'ils sont serait bénéfique. Quels sont donc les haricots de printemps? Comment peuvent-ils être utilisés? Ont-ils quelque chose à voir avec l'injection de dépendance?
398
Réponses:
En savoir plus sur les beans et la portée de SpringSource :
* IoC: inversion de contrôle
la source
@Autowired
? Ou tout simplement quand je fais mesimport
s?Les beans Spring ne sont que des objets d'instance qui sont gérés par le conteneur Spring, c'est-à-dire qu'ils sont créés et câblés par le framework et placés dans un "sac d'objets" (le conteneur) d'où vous pourrez les récupérer plus tard.
La partie "câblage", c'est ce qu'est l'injection de dépendances, ce que cela signifie, c'est que vous pouvez simplement dire "j'aurai besoin de cette chose" et le framework suivra quelques règles pour vous donner l'instance appropriée.
Pour quelqu'un qui n'est pas habitué à Spring, je pense que l'article de Wikipedia Spring a une belle description :
la source
Comprenons d'abord le printemps:
Le printemps est un cadre léger et flexible.
Analogie:
Bean: est un objet qui est créé, géré et détruit dans Spring Container. Nous pouvons injecter un objet dans le conteneur Spring via les métadonnées (xml ou annotation), ce qui est appelé inversion de contrôle.
Analogie: Supposons que l'agriculteur possède une terre agricole cultivée par graines (ou haricots). Ici, Farmer est Spring Framework, les terres agricoles sont Spring Container, les haricots sont Spring Beans, la culture est Spring Processors.
Comme le cycle de vie des haricots, les haricots de printemps ont eux aussi leur propre cycle de vie.
source img
Voici la séquence d'un cycle de vie du bean au printemps:
Instancier: le conteneur Spring trouve d'abord la définition du bean dans le fichier XML et instancie le bean.
Remplir les propriétés: à l'aide de l'injection de dépendances, spring remplit toutes les propriétés comme spécifié dans la définition du bean.
Définir le nom du bean: si le bean implémente l'
BeanNameAware
interface, spring transmet l'id du bean à lasetBeanName()
méthode.Définir la fabrique de bean: si Bean implémente l'
BeanFactoryAware
interface, le ressort passe la beanfactory à lasetBeanFactory()
méthode.Pré-initialisation: également appelé post-traitement du bean. Si des beans BeanPostProcessors sont associés au bean, Spring appelle la
postProcesserBeforeInitialization()
méthode.Initialiser les beans: si le bean implémente
IntializingBean
, saafterPropertySet()
méthode est appelée. Si le bean a une déclaration de méthode init, la méthode d'initialisation spécifiée est appelée.Post-initialisation: - S'il y a des
BeanPostProcessors
associés au bean, leurspostProcessAfterInitialization()
méthodes seront appelées.Prêt à l'emploi: le bean est maintenant prêt à l'emploi par l'application
Destroy: si le bean implémente
DisposableBean
, il appellera ladestroy()
méthodela source
Vous l'avez bien compris partiellement. Vous devez adapter les haricots en fonction de vos besoins et informer Spring Container de le gérer en cas de besoin, en utilisant une méthodologie connue sous le nom d'IoC ( Inversion of Control ) inventée par Martin Fowler , également connue sous le nom de Dependency Injection (DI).
Vous câblez les beans de manière à ne pas avoir à vous soucier de l'instanciation ou à évaluer toute dépendance à l'égard du bean. Ceci est populairement connu comme le principe d'Hollywood .
Google est le meilleur outil pour en savoir plus à ce sujet en plus des liens qui vous submergeraient ici dans cette question. :)
la source
Le printemps a le conteneur IoC qui porte le sac de haricots; la création, la maintenance et la suppression sont des responsabilités de Spring Container. Nous pouvons mettre le haricot dans Spring par câblage et câblage automatique. Le câblage signifie que nous le configurons manuellement dans le fichier XML et "Auto Wiring" signifie que nous mettons les annotations dans le fichier Java puis Spring scanne automatiquement le contexte racine où le fichier de configuration java, le fait et le met dans le sac de Spring.
Voici l'URI détaillé où vous avez obtenu plus d'informations sur Beans
la source
Les haricots de printemps sont des classes. Au lieu d'instancier une classe (à l'aide
new
), vous obtenez une instance en tant quebean
transtypage en votre type de classe à partir du contexte d'application, où le bean est ce que vous avez configuré dans la configuration du contexte d'application. De cette façon, l'application entière conserve une instance de portée singleton dans toute l'application. Tous les beans sont initialisés suivant leur ordre de configuration juste après l'instanciation du contexte d'application. Même si vous n'obtenez pas de beans dans votre application, toutes les instances de beans sont déjà créées au moment où vous avez créé le contexte de l'application.la source
Les beans Spring ne sont que des instances d'objet gérées par le conteneur Spring IOC.
Le conteneur Spring IOC porte le sac de haricots. La création, la maintenance et la suppression des haricots incombent à Spring Container.
Nous pouvons mettre le haricot dans Spring par câblage et câblage automatique.
Le câblage signifie que nous le configurons manuellement dans le fichier XML.
Le câblage automatique signifie que nous mettons les annotations dans le fichier Java puis que Spring analyse automatiquement le contexte racine où se trouve le fichier de configuration java, le crée et le met dans le sac de Spring.
la source
Un Bean est un POJO (Plain Old Java Object), qui est géré par le conteneur à ressort.
Les conteneurs Spring ne créent qu'une seule instance du bean par défaut. Ce bean est mis en cache en mémoire, donc toutes les requêtes pour le bean renverront une référence partagée au même bean.
L'annotation @Bean renvoie un objet que spring enregistre en tant que bean dans le contexte de l'application. La logique à l'intérieur de la méthode est responsable de la création de l'instance.
Quand utilisons-nous l'annotation @Bean?
Lorsque la configuration automatique n'est pas une option. Par exemple, lorsque nous voulons câbler des composants à partir d'une bibliothèque tierce, car le code source n'est pas disponible, nous ne pouvons donc pas annoter les classes avec @Component.
Un scénario en temps réel pourrait être que quelqu'un souhaite se connecter au compartiment Amazon S3. Parce que la source n'est pas disponible, il devrait créer un @bean.
Source pour le code ci-dessus -> https://www.devglan.com/spring-mvc/aws-s3-java
Parce que j'ai mentionné @Component Annotation ci-dessus.
@Component Indique qu'une classe annotée est un "composant". Ces classes sont considérées comme des candidats à la détection automatique lors de l'utilisation de la configuration basée sur des annotations et de l'analyse du chemin de classe.
L'annotation de composant enregistre la classe comme un bean unique.
la source
Dans Spring, les objets qui forment l'épine dorsale de votre application et qui sont gérés par le conteneur Spring IoC sont appelés beans. Un bean est simplement un objet qui est instancié, assemblé et autrement géré par un conteneur Spring IoC;
la source
Livre: Just Spring
la source
La configuration XML de Spring est composée de Beans et Beans sont essentiellement des classes. Ce ne sont que des POJO que nous utilisons dans notre ApplicationContext. La définition de Beans peut être considérée comme remplaçant le mot-clé new. Ainsi, où que vous utilisiez le mot-clé new dans votre application, quelque chose comme:
Lorsque vous utilisez ce mot clé nouveau, c'est quelque part, vous pouvez envisager de supprimer cette configuration et de la placer dans un fichier XML. Nous allons donc coder comme ceci:
Maintenant, nous pouvons simplement utiliser Setter Injection / Constructor Injection. J'utilise Setter Injection.
la source