Introducción y uso de Spring IOC

Una introducción al COI y al frijol

El COI también se conoce como DI. Use los parámetros del constructor, los parámetros fatory y las propiedades para establecer la instancia del objeto. Al crear un bean en este proceso, el contenedor inyectará estas dependencias. El bean en sí usa la construcción directa de la clase para controlar la creación de instancias o la ubicación de sus dependencias. Debido a que la forma de crear un bean se invierte, se llama Inversión de control (IoC). Para decirlo sin rodeos, el objeto se creó en el pasado a través de nuevo, pero ahora no es nuevo, y el objeto se inyecta directamente a través de la construcción de la clase.

org.springframework.beansY org.springframework.contextes el núcleo del contenedor COI. La interfaz BeanFactory proporciona la capacidad de configurar objetos a un alto nivel; ApplicationContext es una subinterfaz de BeanFactory. Sus funciones adicionales incluyen características AOP, procesamiento de mensajes y recursos, propagación de eventos y otras funciones. Puede reemplazar completamente a BeanFactory, al igual que el padre es un granjero pobre y el hijo es Gao Fushuai; contenedores específicos como WebApplicationContext proporcionan funciones de aplicaciones web ricas.

En primavera, el objeto es el esqueleto de la aplicación, que es administrado por el contenedor IOC, que también se puede llamar un bean; la instancia, el ensamblaje y su ciclo de vida del bean son administrados por el contenedor IOC. Los beans y sus dependencias mutuas se configuran en metadatos de configuración y luego son administrados y utilizados por el contenedor IOC.

Resumen de dos contenedores

org.springframework.context.ApplicationContextDe hecho, representa el contenedor IOC, que es responsable de la creación de instancias, ensamblaje y configuración de Bean. ¿Cómo configura y gestiona los beans IOC container? Obtiene instrucciones para gestionar beans mediante metadatos de configuración. Entonces, ¿qué son los metadatos de configuración? Los metadatos de configuración son en realidad XML, anotaciones de Java y código de Java.

Spring se puede usar de forma inmediata a través de una pequeña cantidad de configuración de ApplicationContext. Por lo general, una sola aplicación creará una instancia de ClassPathXmlApplicationContext o FileSystemXmlApplicationContext. Aunque XML es un formato de metadatos de configuración tradicional, también puede usar una pequeña cantidad de declaraciones de visualización XML para admitir anotaciones Java o formato de metadatos de código Java. En muchos escenarios de aplicación, se crearán muchos contenedores IOC en lugar de uno.

Cuando sus objetos y metadatos de configuración estén completos, ApplicationContext se inicializará y creará, y luego podrá ejecutar completamente el sistema o la aplicación, como se muestra a continuación:

Inserte la descripción de la imagen aquí

Tres metadatos de configuración inicial

configuración del resorte requiere un mínimo de una o más de la haba, la configuración xml basado <bean>requiere elemento de nivel superior en <beans>el interior, la configuración correspondiente se basa en la java @Bean (Método para arriba) y anotaciones @Configuration (para la clase arriba) anotación. En el <bean>único identificador ID representa el haba, clase de bean representa el nombre completo de la clase, por ejemplo:

<?xml version="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-beans.xsd">

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>
复制代码

Contenedor de cuatro instancias

Proporcione a ApplicationContext una o más rutas de recursos en forma de cadenas, y ApplicationContext cargará estos metadatos de configuración externa a través de esta ruta de recursos.

ApplicationContext context =
    new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});
复制代码

En <property>las propiedades del elemento de nombre de atributo indica JavaBean, ref puntos para definir otra frijol.

<?xml version="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-beans.xsd">

    <!-- services -->

    <bean id="iocService" class="com.youku1327.ioc.service.IocService">
        <property name="iocDao" ref="iocDao"/>
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for services go here -->

</beans>
复制代码

Cinco ensambles xml

En el desarrollo real, la capa empresarial y la capa lógica están separadas, es decir, un grado de acoplamiento de bean de configuración XML es demasiado alto, necesitamos definir múltiples desacoplamientos mxl, pero cómo hacer referencia a un bean en otro xml en un xml ¿Qué? Podemos <import/>cargar beans desde otro xml a través del elemento. Al introducir xml externo, es la ruta relativa del xml actual, como en el siguiente ejemplo: services.xml está en el mismo directorio que el xml actual, y message.xml está en un subdirectorio del directorio xml actual.

<beans>
    <import resource="services.xml"/>
    <import resource="resources/message.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>
复制代码

Seis contenedores de uso

ApplicationContext es una fábrica de alto nivel que mantiene un registro de diferentes beans y dependencias. Utilice el método T getBean (nombre de cadena, clase requiredType) de esta interfaz para obtener la instancia de bean.

6.1 pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>

    </dependencies>
复制代码

6.2 dao

/**
 * @Author lsc
 * @Description <p>ioc dao </p>
 * @Date 2019/10/29 20:04
 */
public class IocDao {
}
复制代码

6.3 servicio


/**
 * @Author lsc
 * @Description <p> </p>
 * @Date 2019/10/29 20:03
 */
public class IocService {

    private IocDao iocDao;

    private String name;


    public IocDao getIocDao() {
        return iocDao;
    }

    public void setIocDao(IocDao iocDao) {
        this.iocDao = iocDao;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
复制代码

6.4 dao.xml

<?xml version="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-beans.xsd">

    <!-- services -->

    <bean id="iocDao" class="com.youku1327.ioc.dao.IocDao">
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for services go here -->

</beans>
复制代码

6.5 servicios.xml

<?xml version="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-beans.xsd">

    <import resource="dao.xml"/>

    <!-- services -->

    <bean id="iocService" class="com.youku1327.ioc.service.IocService">
        <property name="iocDao" ref="iocDao"/>
        <!-- additional collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions for services go here -->

</beans>
复制代码

6.6 aplicación

/**
 * @Author lsc
 * @Description <p> 初始ioc</p>
 * @Date 2019/10/29 22:22
 */
public class Application {

    public static void main(String[] args) {
        // 创建和配置 beans
        ApplicationContext context =
                new ClassPathXmlApplicationContext(new String[] {"services.xml", "dao.xml"});
        // 获得配置的实例
        IocService service = context.getBean("iocService", IocService.class);
        // 使用配置的实例
        service.setName("youku1327");
        System.out.println(service.getName());
    }
}
复制代码

6.7 Salida

Inserte la descripción de la imagen aquí

Siete documentos de referencia y cuenta pública.

El código fuente se encuentra al final del artículo correspondiente a la cuenta pública.

referencia de primavera

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin juejin.im/post/5e970168f265da47d2025aba
Recomendado
Clasificación