Prefacio
La inversión de control (COI) se usa para resolver el acoplamiento, y se divide principalmente en dos tipos: inyección de dependencia y búsqueda de dependencia.
La inyección de dependencia es inyectar las dependencias que deberían estar en el programa externamente en el programa. Por supuesto, también es un concepto de patrones de diseño.
Suponiendo que existe la implementación B de las interfaces A y A, este código se ejecutará a a a = nuevo B (); En este momento, inevitablemente ocurrirá una cierta dependencia. Sin embargo, la interfaz parece resolver la dependencia, pero el acoplamiento aún se producirá al hacerlo. Podemos usar la inyección de dependencia para lograr el desacoplamiento. En el COI, puede colocar el código en el que desea depender en XML y formar esta relación de dependencia cuando sea necesario a través de un contenedor, es decir, inyectar la implementación de la interfaz requerida en la clase que la necesita. Esta puede ser la fuente del término "inyección de dependencia".
Comprensión simple de la inyección de dependencia
Entonces, dejemos de lado las tecnologías relacionadas con Spring y XML ahora, ¿cómo podemos usar la forma más fácil de implementar una inyección de dependencia? Ahora sigue siendo la implementación de las interfaces A y A.
Entonces nuestro propósito es así, a a = nuevo B (); Ahora estamos definiendo una Clase C, y la siguiente es la relación entre C y A. Para nuevo, C crea una clase de implementación para una interfaz
Clase pública C {privado a a; public c (a a) {this.a = a; }}Entonces, ¿cómo usar nuevo? Defina una clase D y llame al constructor de C en D nuevo B (); eso es
clase pública d {@test public void use () {c c = new C (new B ()); }}De esta manera, no tendremos dependencias entre A y B en C. Si queremos cambiar la clase de implementación de A, podemos modificar directamente los parámetros del método de construcción en D. Es muy simple y también resuelve el acoplamiento. Este método es el más comúnmente conocido como inyección de constructor.
Entonces Spring es la solución para acoplar y usar IOC. Aquí está el ejemplo más simple de inyección de dependencia de primavera:
Springconfig.xml
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beanss.xsd"> <bean id = "sayhello"> <constructor-arg reh = ""/> </> </> <hay> <HEY " /> < /frijoles>
Análisis: Dos frijoles están configurados aquí. El primero es inyectar un frijol en el constructor, y el segundo es el frijol que se inyectará en el constructor.
Hola.java
Smile de paquete;/*** Creado por Smile el 2016/4/21. */public class Hello {public hello () {System.out.println ("Hello"); } public void sayshello () {System.out.println ("Quiero saludar"); }}TheInterface.java
Smile de paquete;/*** Creado por Smile el 2016/4/20. */clase pública thetestInterface {private hola hola hola; public thetestinterface (hola hola) {this.hello = hello; }}Usar.java
paquete com.smile; import org.junit.test; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlaPplicationContext; import smile.hello;/*** creado por Smile en 2016/4/21. */public class use {@test public void useTest () {ApplicationContext context = new ClassPathXMLApPlicationContext ("SpringConfig.xml"); Hola hola = (hola) context.getBean ("hola"); hola.sayhello (); }}Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.