Avant de lire cet article, vous pouvez d'abord vous référer à l'article " Une compréhension simple de l'IOC et des exemples AOP et de code de Spring " pour en savoir plus sur le CIO et l'AOP au printemps. Passons au sujet. Cet article présente comment définir et charger des haricots java au printemps.
Scénarios commerciaux
C'est aussi un exemple de personnes conduisant. Tout d'abord, définissez une interface de voiture et deux implémentaires Benz et BMW, puis définissez une classe de personne, qui dépend de l'interface de la voiture.
Interface publique Car {void go ();} classe publique Benz implémente la voiture {public void go () {System.out.println ("benz go ..."); }} classe publique BMW implémente la voiture {public void go () {System.out.println ("bmw go ..."); }} classe publique Personne {String name = ""; Voiture voiture = null; Public Car GetCar () {RETOUR CAR; } public void setCar (voiture car) {this.car = car; } Person public (nom de chaîne) {this.name = name; } public void drive () {System.out.println (name + "est conduit ..."); cargaison(); }}Dans la classe de personne, nous pouvons voir que l'objet de voiture est un objet dépendant de cette classe et doit être injecté dans la classe de personne via une méthode de constructeur. Le code ci-dessus n'a toujours pas d'ombre de printemps. Voyons comment le printemps l'injecte.
Ajouter les dépendances de printemps
De nos jours, de nombreux projets s'appliquent à Maven pour gérer les dépendances, et il en va de même pour ce projet. J'ajouterai un nœud de dépendance à pom.xml
<Dependance> <GroupId> org.springFramework </proncId> <Ertifactid> Spring-core </lefactive> <in version> 3.2.6. <version> 3.2.6.release </DERNIERSE> </ Dependency> <Dedency> <ProupId> org.SpringFramework </rom grouped> <ArtifActid> Spring-Context </ Artifactid> <Version> 3.2.6.Release </ Version> </Dependency> <Dedency> <ProupId> org.springFramework </prouvend> <version> 3.2.6.release </ version> </ dépendance> <dependency> <proupId> org.springframework </rom grouped> <ArtefactId> printemps-context-support </ artifactid> <version> 3.2.6.release </ version> </ Dependency>
Mettez ces nœuds de dépendance dans le nœud de dépendances du fichier pom.xml, et Eclipse télécharge automatiquement les packages pertinents à l'emplacement par défaut.
Définissez et assemblez manuellement les haricots
Créez un nouveau fichier XML nommé bean.xml dans le répertoire racine du projet, avec le contenu suivant:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "- // printemps // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtd"> <Beans> <bean id = "car" /> <ean id = "tom"> <construct <propriété name = "car" ref = "car" /> </bEAN> </ beans>
Le fichier XML ci-dessus définit d'abord un haricot avec ID comme une voiture et un haricot avec ID comme Tom. La voiture est une dépendance de Tom et est assemblée manuellement dans l'attribut de voiture de Tom via <propriété name = "car" ref = "car" />.
Le comportement de la création de relations collaboratifs entre les objets d'application est appelée câblage, qui est également l'essence de la dépendance à l'injection d'objets.
Ensuite, nous instancions un objet de contexte d'application dans la méthode principale et obtenons le nœud Tom dans le bean.
public class app {public static void main (string [] args) {applicationContext context = new ClassPathXmlApplicationContext ("bean.xml"); Personne tom = (personne) context.getBean ("tom"); tom.drive (); }}Exécutez le programme et le résultat de sortie est:
Tom conduit ... BMW GO ...
Assemblage automatique
Répétez à nouveau, le comportement de la création d'une relation collaborative entre les objets d'application est appelé câblage, plutôt que le processus d'instanciation de l'objet. Dans le fichier XML ci-dessus, j'ai assemblé l'objet de dépendance par <propriété name = "car" ref = "car" />, mais avec le développement continu de l'application, le fichier de configuration XML deviendra certainement de plus en plus complexe. La façon dont nous associons les haricots à la voiture d'identification via ref = "car" a commencé à prendre du retard. Ensuite, je vais présenter comment le printemps implémente les haricots d'assemblage automatique.
Types d'assemblage automatique
Le printemps a quatre stratégies d'assemblage. Afin de réduire la complexité de cet article, je présenterai deux stratégies couramment utilisées, la méthode BYNAME et la méthode ByType. Comme son nom l'indique, la méthode ByName est de voir si le nom de l'attribut et l'ID du bean sont les mêmes. Dans cet exemple, la classe de personne a un attribut appelé Car. Si l'attribut de classe ou de modification est défini sur l'assemblage automatique et que la politique d'assemblage est byname, Spring recherchera un bean avec voiture d'identification (doit être du même nom). La méthode ByType est de comparer si les types sont les mêmes. Dans cet exemple, si l'attribut de voiture de la classe de personne ou de la classe de personne est défini sur l'auto-assemblage et que la politique d'assemblage est ByType, puisque l'attribut de voiture est de type de voiture, le printemps recherchera des haricots de la voiture de type ou de sa sous-classe lors de l'assemblage automatique.
Utilisez XML pour implémenter l'assemblage automatique
Ensuite, je modifierai le code et utiliserai la méthode de configuration XML pour obtenir un assemblage automatique.
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "- // printemps // dtd bean // en" "http://www.springframework.org/dtd/spring-eans.dtd"> <Beans> <bean id = "car" /> <ean id = "tom" <Constructor-Arg Value = "Tom" /> </bEAN> </EANS>
La classe de personne ne nécessite aucune modification.
Tout d'abord, j'ai supprimé la ligne de code <propriétéName = "car" ref = "car" /> car c'est une manière manuelle. Ensuite, j'ajoute une propriété autowire = "byname" au bean avec ID, et je le définis pour assembler automatiquement la dépendance par nom. Lors de l'obtention de l'objet de personne, tous les noms de propriété de la personne ont des significations spéciales. Spring a surveillé un autre attribut appelé Car dans la classe Personne, et a trouvé un bean avec voiture d'identification dans le fichier de configuration, de sorte qu'il a automatiquement assemblé à l'attribut de voiture de la personne.
Assemblage automatique par annotation
Nous apportons les modifications suivantes à bean.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Beans public "- // printemps // dtd bean // en" "http://www.springframework.org/dtd/spring-Beans.dtd"> <beans default-autowire =" byname "> <ean id =" car " <Constructor-Arg Value = "Tom" /> </bEAN> </EANS>
Supprimez un attribut autowire = "byname" de beans avec id tom, puis ajoutez un attribut default-autowire = "byname" aux beans de nœud pour définir la valeur par défaut de la méthode d'assemblage automatique de tous les beans définis dans le fichier sur ByName. Ensuite, apportez quelques modifications à la classe de personne et ajoutez une annotation @Autowired à la méthode du secteur de la voiture pour informer le ressort pour assembler automatiquement la propriété. Relancer le code et les résultats de sortie restent inchangés.
@AutowiredPublic void setCar (voiture voiture) {this.car = car;}Si vous implémentez l'assemblage automatique via des annotations, vous devez d'abord définir la méthode d'assemblage automatique par défaut sur la racine des beans, puis vous n'avez pas besoin de configurer l'attribut automatique pour chaque bean qui a besoin d'assemblage automatique dans le fichier de configuration (si la méthode est incompatible avec la valeur par défaut, vous pouvez toujours le configurer séparément pour remplacer la méthode d'assemblage automatique par défaut). La méthode d'annotation est plus délicate et peut contrôler le niveau d'attribut des haricots qui doivent être automatiquement assemblés.
Dans tout le code ci-dessus, nous utilisons la classe org.zdk.springproj1.bmw comme dépendance de la classe de personne. Si la classe de personne n'a pas besoin de conduire une BMW en raison des besoins de l'entreprise, il est nécessaire de modifier la configuration en org.zdk.springproj1.benz, sans modifier de code java. C'est la puissance du printemps en tant que conteneur IOC.
Résumer
Ce qui précède est toute l'explication détaillée de la définition du ressort et des haricots d'assemblage dans cet article. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site:
Java Spring Annotation Configuration BEAN Instance Code Analyse
Explication détaillée du cycle de vie de l'utilisation de la configuration du printemps
S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!