Red de conocimiento informático - Problemas con los teléfonos móviles - Las diferencias y ventajas de la inyección de setter y la inyección de constructor en el marco Spring

Las diferencias y ventajas de la inyección de setter y la inyección de constructor en el marco Spring

Ventajas de la inyección de setter

1. Para los programadores que están acostumbrados al desarrollo tradicional de JavaBean, establecer dependencias mediante el método setter es más intuitivo

y más natural.

2. Si las dependencias (o herencia) son más complejas, entonces el constructor del modo Type3 será bastante grande (necesitamos configurar todas las dependencias en el constructor), mientras que los patrones Type2 tienden a ser más simples.

3. Para algunas bibliotecas de terceros, es posible que necesitemos proporcionar un constructor predeterminado para el componente (como Action en Struts

), y el mecanismo de inyección de dependencia Type3 tiene su propio. limitaciones.Por lo tanto, es difícil lograr la funcionalidad requerida.

Ventajas de la inyección de constructor:

1. "Crear un objeto legal completo durante la construcción". Para este principio de diseño de Java, Type3 es sin duda el mejor.

p>

Contestador.

2. Evitando métodos de configuración engorrosos, todas las dependencias se configuran en el constructor y las dependencias se presentan de manera centralizada,

más legible.

3. Dado que no existe un método de establecimiento, las dependencias las establece el contenedor cuando se construye, por lo que el componente se encuentra en un estado

relativamente sin cambios

. estado después de la creación. No necesita preocuparse de que el código de la capa superior ejecute el método setter para destruir las dependencias del componente durante el proceso de llamada

.

No hay necesidad de preocuparse de que el código de nivel superior llame al método setter y destruya las dependencias de los componentes.

Especialmente para los componentes del modo Singleton, esto tendrá un impacto significativo en el sistema. .

4. Del mismo modo, dado que la asociación solo se expresa en el constructor, solo el creador del componente debe preocuparse por las dependencias dentro del componente.

Para la persona que llama, las dependencias en los componentes son un cuadro negro. Proteger información innecesaria de las capas superiores también puede aclarar la estructura jerárquica del sistema.

5. La inyección a través del constructor significa que podemos decidir el orden en que se inyectan las dependencias en el constructor. Para componentes que dependen en gran medida de servicios externos

el orden en el que se obtienen las dependencias puede ser muy importante. Por ejemplo,

el requisito previo para inyectar una dependencia específica es la fuente de datos del componente y. Se han establecido los recursos relacionados.