Antes de leer este artículo, primero puede consultar el artículo " Comprensión simple del COI y AOP de Spring y ejemplos de código " para aprender sobre COI y AOP en primavera. Vamos al tema. Este artículo presenta cómo definir y cargar frijoles Java en primavera.
Escenarios comerciales
También es un ejemplo de personas que conducen. Primero, defina una interfaz de automóvil y dos implementan Benz y BMW, y luego defina una clase de persona, que depende de la interfaz del automóvil.
auto de interfaz pública {void go ();} public class benz implementa automóvil {public void go () {System.out.println ("Benz Go ..."); }} public class BMW implementa automóvil {public void go () {System.out.println ("BMW Go ..."); }} Persona de clase pública {String name = ""; Coche de coche = nulo; Public Car getCar () {return Car; } public void setCar (coche coche) {this.car = car; } persona pública (nombre de cadena) {this.name = name; } public void Drive () {System.out.println (Name+"Is Driving ..."); carga(); }}En la clase de la persona podemos ver que el objeto del automóvil es un objeto dependiente de esta clase y debe inyectarse en la clase de persona a través de un método de constructor. El código anterior todavía no tiene sombra de primavera. Veamos cómo la primavera lo inyecta.
Agregar dependencias de primavera
Hoy en día, muchos proyectos se aplican a Maven para administrar las dependencias, y lo mismo es cierto para este proyecto. Agregaré un nodo de dependencia a pom.xml
<Spendency> <MoupRoMID> org.springframework </groupid> <artifactid> spring-core </artifactid> <verserse> 3.2.6.release </versewers> </pendency> <epardency> <proupId> org.springframework </groupid> <artifactid> spring-beans </artifactid>> <Versión> 3.2.6.Release </Version> </pendency> <epardency> <MoupRoMID> org.springframework </proupId> <AtifactId> Spring-Context </artifactId> <PROLEPORION> 3.2.6.RELEASE </Version> </Dependency> <Spendency> <ProupId> Org.springFramework </proupid> <artifactid> Springcontex <Versión> 3.2.6.Release </versión> </pendency> <ependency> <moupid> org.springframework </groupid> <artifactid> spring-context-support </artifactid> <versión> 3.2.6.release </versión> </dependencia>
Coloque estos nodos de dependencia en el nodo de dependencias del archivo pom.xml, y Eclipse descargará automáticamente los paquetes relevantes en la ubicación predeterminada.
Definir y ensamblar manualmente los frijoles
Cree un nuevo archivo XML llamado Bean.xml en el directorio raíz del proyecto, con el siguiente contenido:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans pública "-// spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtdd"> <beachs> <bean id = "car" /> <Property Name = "Car" REF = "Car" /> < /Bean> </le Beans>
El archivo XML anterior primero define un frijol con ID como automóvil y un frijol con ID como Tom. El automóvil es una dependencia de TOM y se ensambla manualmente en el atributo del automóvil de TOM a través de <Property Name = "Car" Ref = "Car" />.
El comportamiento de crear relaciones colaborativas entre los objetos de aplicación se llama cableado, que también es la esencia de dependencia de la inyección de objetos.
A continuación, instanciamos un objeto de contexto de aplicación en el método principal y obtenemos el nodo TOM en el bean.
Public Class App {public static void main (string [] args) {applicationContext context = new ClassPathXMLApPlicationContext ("bean.xml"); Persona tom = (persona) context.getBean ("tom"); Tom.drive (); }}Ejecute el programa y el resultado de la salida es:
Tom conduce ... BMW Go ...
Ensamblaje automático
Repita nuevamente, el comportamiento de crear una relación colaborativa entre los objetos de aplicación se llama cableado, en lugar del proceso de instancia del objeto. En el archivo XML anterior, ensamblé el objeto de dependencia por <Property Name = "Car" Ref = "Car" />, pero con el desarrollo continuo de la aplicación, el archivo de configuración XML definitivamente se volverá cada vez más complejo. La forma en que asociamos los frijoles con el auto de identificación a través de ref = "auto" ha comenzado a quedarse atrás. A continuación, presentaré cómo Spring implementa frijoles de ensamblaje automático.
Tipos de ensamblaje automático
La primavera tiene cuatro estrategias de ensamblaje. Para reducir la complejidad de este artículo, introduciré dos estrategias de uso común, el método de byname y el método de alumno. Como su nombre lo indica, el método Byname es ver si el nombre del atributo y la ID del bean son los mismos. En este ejemplo, la clase de persona tiene un atributo llamado automóvil. Si el atributo de clase o cambio se establece en el ensamblaje automático y la política de ensamblaje es byname, Spring buscará un bean con un auto de identificación (debe ser del mismo nombre). El método de los alumnos es comparar si los tipos son los mismos. En este ejemplo, si el atributo del automóvil de la clase de persona o la clase de persona está configurada en el ensamblaje automático y la política de ensamblaje es junto al bytype, ya que el atributo del automóvil es tipo automóvil, la primavera buscará frijoles de tipo de automóvil o su subclase cuando se ensambla automáticamente.
Use XML para implementar un ensamblaje automático
A continuación, modificaré el código y usaré el método de configuración XML para lograr un ensamblaje automático.
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans public "-// spring // dtd bean // en" "http://www.springframework.org/dtd/spring-beans.dtdd"> <beachs> <bean id = "card =" carro "/> <bean id =" tom "tom" tom "tom" tom "tom" tom "byname" <constructor-arg value = "tom"/> </bean> </le beans>
La clase de la persona no requiere ninguna modificación.
Primero, eliminé la línea de código <Propertyname = "Car" ref = "Car"/> porque es una forma manual. Luego, agrego una propiedad AutoWire = "ByName" al bean con ID, y la configuro para ensamblar automáticamente la dependencia por nombre. Al obtener objeto de persona, todos los nombres de propiedad de la persona tienen significados especiales. Spring monitoreó otro atributo llamado automóvil en la clase de persona y encontró un bean con un automóvil de identificación en el archivo de configuración, por lo que se ensambló automáticamente al atributo de automóvil de la persona.
Ensamblaje automático a través de la anotación
Hacemos las siguientes modificaciones a Bean.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Beans pública "-// spring // dtd bean // en" http://www.springframework.org/dtd/spring-beans.dtdt"> fians predeterminado- autowire = "byname"> <<<> <<<<<<ring "/" car " <constructor-arg value = "tom"/> </bean> </le beans>
Elimine un atributo AutoWire = "ByName" de los frijoles con ID Tom, y luego agregue un atributo predeterminado-autowire = "byname" a los frijoles de nodo para establecer el valor predeterminado del método de ensamblaje automático de todos los frijoles definidos en el archivo a byname. Luego, haga algunas modificaciones a la clase de persona y agregue la anotación de @autowired al método setter del automóvil para notificar a Spring para ensamblar automáticamente la propiedad. Volver a ejecutar el código y los resultados de la salida permanecen sin cambios.
@AUtowiredPublic Void setcar (coche de coche) {this.car = car;}Si implementa un ensamblaje automático a través de anotaciones, primero debe establecer el método de ensamblaje automático predeterminado en la raíz de los frijoles, y luego no necesita configurar el atributo AutoWire para cada frijol que necesita un ensamblaje automático en el archivo de configuración (si el método es inconsistente con el valor predeterminado, aún puede configurarlo por separado para fallar el método de ensamblaje automático predeterminado). El método de anotación es más delicado y puede controlar el nivel de atributo de frijoles que deben ensamblarse automáticamente.
En todo el código anterior, usamos la clase org.zdk.springproj1.bmw como dependencia de la clase de persona. Si la clase de la persona no necesita conducir un BMW debido a las necesidades comerciales, es necesario cambiar la configuración a org.zdk.springproj1.benz, sin modificar ningún código Java. Este es el poder de la primavera como contenedor de COI.
Resumir
Lo anterior es toda la explicación detallada de la definición de resorte y los frijoles de ensamblaje en este artículo. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Java Spring Annotation Configuration Analysis de código de instancia de Bean
Explicación detallada del ciclo de vida del uso de la configuración de primavera
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!