El COI suele ser lo que llamamos inversión de control, que también es el foco de Java y a menudo se pregunta durante las entrevistas.
La inversión de control (COI en abreviatura inglesa) da el derecho de crear objetos al marco, que es una característica importante del marco y no es un término especial para la programación orientada a objetos. Incluye inyección de dependencia (DI) y búsqueda de dependencia.
El COI cambia la forma en que el programa adquiere objetos, desde el comienzo del nuevo objeto hasta la creación y la inyección de un marco de terceros. Los marcos de terceros generalmente especifican qué implementación se inyecta a través de la configuración, reduciendo así el acoplamiento del código fuente.
¿Cuál es el mayor beneficio del COI?
Debido a que la generación de objetos se define en XML, será muy simple cuando necesitemos cambiar a una subclase de implementación (generalmente tales objetos son realistas en algún tipo de interfaz), simplemente modifique el XML, para que incluso podamos implementar el enchufe de objetos en caliente (un poco como la interfaz USB y el disco duro SCIS).
El COI se puede dividir en inyección de dependencia (DI) y búsqueda de dependencia de acuerdo con el método de implementación.
DI es el principal enfoque técnico para controlar la inversión, dividido en inyección de setter y inyección del constructor
Inyección de setter
Después de instanciar el bean llamando al constructor sin parámetros o un método de fábrica sin parámetros estática, se llama al método de setter de Bean para realizar la inyección de setter.
clase pública JDBCDataSource () {Private String Driver; public void setdriver (controlador de cadena) {class.forname (controlador); this.driver = controlador;}} ...............A continuación, implementa el archivo XML de configuración de inyección de setter
<bean id = "dataSource"> <propiedad name = "controlador" valor = "oracle.jdbc.oracledRiver"/> <propiedad name = "url" value = "jdbc: oracle: oracle: @localhost: 1521: orcl"/> <Property name = "user" user = "yreny"/> <name de propiedad = "Value" Value = "root"/> <<<</> <</> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </> </bean "
Inyección de constructor
Esto se logra llamando a un constructor con parámetros. Cuando se instancia el contenedor, el constructor correspondiente se ejecutará de acuerdo con el tipo de parámetro.
clase pública OracleUserDao implementa userdao {private jdbcdataSource dataSource; public oracleUserDao (JDBCDataSource DataSource) {this.dataSource = DataSource;}} .................Especificar inyección por índice de parámetros de construcción
<bean id = "dataSource"> <proerty name = "controlador" valor = "oracle.jdbc.oracledriver"/> <propiedad name = "url" value = "jdbc: oracle: oracle: delgada: @localhost: 1521: orcl"/> <name de propiedad = "user" value = "andreny"/> <name de propiedad = "Value" Value = "root"/<</> <</> </> </> </> </</> </beay id = "userdao"> <construtor-argindex = "0" ref = "dataSource"/> </bean>
Resumir
Lo anterior se trata del análisis del código del COI Spring, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Explicación detallada del COI y DI de Spring
Introducción detallada a la implementación de simulación del COI de Spring
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!