Exemples de grains internes de printemps
Dans le framework Spring, chaque fois qu'un bean est utilisé pour une seule propriété particulière, il est conseillé de le déclarer en tant que bean interne. Et le bean interne est pris en charge à la fois dans l'injection de setter «property
» et l'injection de constructeur «constructor-arg
».
Voir un exemple détaillé pour démontrer l'utilisation du bean interne Spring.
package com.example.common; public class Customer { private Person person; public Customer(Person person) { this.person = person; } public void setPerson(Person person) { this.person = person; } @Override public String toString() { return "Customer [person=" + person + "]"; } }
package com.example.common; public class Person { private String name; private String address; private int age; //getter and setter methods @Override public String toString() { return "Person [address=" + address + ", age=" + age + ", name=" + name + "]"; } }
Souvent, vous pouvez utiliser l’attribut ‘ref
’ pour référencer le bean "Personne" dans le bean "Client", la propriété de la personne comme suit:
En général, c'est bien de faire référence comme ceci, mais comme le bean personne "exemple" n'est utilisé que pour le bean client, il est préférable de déclarer cette personne "exemple" comme un bean interne comme suit:
Ce bean interne est également pris en charge dans l'injection de constructeur comme suit:
Note
La valeur d'id ou de nom dans la classe de bean n'est pas nécessaire dans un bean interne, elle sera simplement ignorée par le conteneur Spring.
Exécuter
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"}); Customer cust = (Customer)context.getBean("CustomerBean"); System.out.println(cust); } }
Sortie
Customer [person=Person [address=address1, age=28, name=example]]