Resorte del marco IOC y la inversión de dependencia control detallado DI inyección

En este artículo se describe el marco de Inversión de Control de primavera COI y la dependencia DI inyección, bienvenido a leer, aprender juntos y avanzar juntos.

base Resorte del marco de referencia : un estudio en profundidad base de Primavera



procedimientos de entrada I. Introducción y COI

  • 依赖注入或控制反转的定义中,调用者不负责被调用者的实例创建工作El trabajo que es responsable por el contenedor de Spring Framework para determinar la configuración del tipo de instancia por los desarrolladores para crear después de la inyección de la persona que llama.
  • Puesto que el recipiente del resorte es responsable de la instancia del abonado llamado, y a continuación, crear una instancia de la instancia es responsable de la inyección de la persona que llama, de ahí el nombre 依赖注入.
  • Creado un ejemplo de trabajo de la persona que llama ya no puede ser creado por la persona que llama, pero ser creado por la primavera, el control se transfiere desde el código de la aplicación a la parte exterior del contenedor, se produjo la inversión de control, de ahí el nombre 控制反转.

Aquí Insertar imagen Descripción


Dos .IOC- Inversión de Control

  • IOC是 Inverse of Control 的简写,意思是控制反转. Es para reducir el acoplamiento entre objetos de diseño.
  • Por la COI, los desarrolladores no tienen que preocuparse por el proceso de creación de un objeto, para completar el contenedor de primavera. procesar Específicamente, el programa de primavera lee el archivo de configuración, las necesidades de objetos para adquirir frijol creados instancia de un objeto creado por el mecanismo de reflexión.
  • Desventaja : el objeto se crea una instancia por el mecanismo de reflexión es, por lo que tienen un cierto impacto en el rendimiento del sistema.
  • ventajas:
  • 内存控制: Unified objeto gestionado, el objeto de evitar el resultado creado caos en sobrecarga de memoria adicional. Facilita la optimización de la memoria.
  • 降低耦合度: Proyecto escalable, fácil de mantener. Si el siguiente caso COI + interfases, elimine cualquier clases de implementación no causará errores de compilación. Mientras se ejecuta para obtener un código de error específico, pero el código no tendrá un problema ----- los demás desde el lado que también refleja un poco acoplamiento en uso.

Aquí hay un ejemplo sencillo: usted es un inquilino para alquilar un apartamento, la COI es equivalente a la agencia de vivienda, fue responsable de la gestión de todas las casas, él os dará todos los anuncios de información ya objetos registrados que busca. Si lo que usted necesita proporcionar lo.

Aquí Insertar imagen Descripción


Tres .DI- inyección de dependencias

  • Dependency Injection,说的是创建对象实例时,同时为这个对象注入它所依赖的属性。Equivalente a la relación entre cada uno de los frijol y haba para la gestión de contenedores . Y este contenedor es primavera.
  • Por ejemplo : generalmente casos depende Dao capa de inyección de servicio de capa; ejemplos capa controlador de servicio en la capa implantado.

Aquí Insertar imagen Descripción


Cuatro. COI y DI

  • COI alias, en 2004, Martin Fowler discute el mismo problema, ya que el COI es Inversión de Control, a continuación, al final es "lo que se invierte el control de ella?" Después de un análisis detallado y los estudios de viabilidad, que llegó a contestar: 获得依赖对象的过程被反转了"" Después el control se invierte por el proceso de obtención de sus objetos dependientes gestionados por el objeto se convierte en inyección activa contenedor COI. Por lo que "la inversión de control" tomó un nombre más apropiado es "inyección de dependencias (inyección de dependencia, DI)".他的这个答案,实际上给出了实现IOC的方法:注入。
  • El llamado inyección de dependencias, que es, por el contenedor IoC durante el funcionamiento, dependencias dinámicas inyecta en ciertos objetos.
  • Por lo tanto, la inyección de dependencias (DI) y control inverso (COI) describen la misma cosa desde diferentes ángulos, se refiere a la introducción por el contenedor COI por medio de la inyección de dependencia, de desacoplamiento entre los objetos .

Cinco .spring usos marco (COI)

  • 1. Crear un JavaBean
  • 2. Configuración JavaBean será administrado al recipiente de primavera
<bean id="book" class="com.it.spring.beans.Book">
    <property name="bookId" value="1"/>
    <property name="bookName" value="Java程序设计"/>
    <property name="bookPrice" value="20.20"/>
    <property name="publishTime">
        <bean class="java.util.Date"/>
    </property>
</bean>
  • recipiente resorte 3. inicialización
  • Resorte cargado perfil núcleo applicationContext.xml
ClassPathXmlApplicationContext context =    new ClassPathXmlApplicationContext("applicationContext.xml");
  • 4. Conseguir objeto contenedor de Primavera
Book book = (Book)context.getBean("book");

  • principio de la primavera COI
  • ① resorte cargado primer archivo de configuración de núcleo por clase ClassPathXmlApplicationContext
  • ② archivo de configuración de núcleo de análisis applicationContext.xml, la información de configuración de frijol
  • ③ Cuando obtenemos el objeto del contenedor, la primavera Identificación del frijol del contenedor va a crear objetos mediante la técnica de la reflexión y la propiedad en virtud de la inyección completa

VI. Tipos de inyección de tres maneras

  • método ①set
  • Por la realización del valor del atributo etiqueta de propiedad de la inyección que realmente está llamando a los métodos de conjunto de propiedades que corresponden a
  • Si la inyección de la propiedad, los tipos de valores simples, y las cuerdas se pueden especificar directamente por el atributo de valor
  • Hay dos tipos de objetos pueden ser inyectados maneras :
<property id="..." name="objAttr">
    <bean class="package.Class"/>
</property>
<bean id="objRef" class="package.Class"/>
<property id="..." name="objAttr" ref="objRef"></property>
  • ② constructor
  • Es en el constructor (el orden de los parámetros puede ser determinado por el índice index = 0,1)
<bean id="book3" class="com.it.spring.beans.Book">
    <constructor‐arg>
        <value>3</value>
    </constructor‐arg>
    <constructor‐arg value="phython程序设计"/>
    <constructor‐arg value="44.44" />
    <constructor‐arg ref="date"></constructor‐arg>
</bean>
  • Puede ser configurado para especificar el parámetro de orden por el atributo de índice, si no hay ningún atributo de índice, todos los parámetros deben coincidir con el orden de los parámetros en el constructor de la clase.
  • ③ inyección interfaz

  • The best investment for young people is to invest in yourself
    Aquí Insertar imagen Descripción
  • 2020.03.25 来自辰兮的第36篇博客
Publicado 40 artículos originales · ganado elogios 182 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_45393094/article/details/105095982
Recomendado
Clasificación