Spring IOC-introducción y uso

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 utiliza la construcción directa de la clase para controlar la instanciación o 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. 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, el grado de acoplamiento de un bean de configuración xml es demasiado alto, necesitamos definir múltiples desacoplamientos mxl, pero cómo referirnos a beans 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. T getBean (String name, Class usando esta interfaz requiredType) puede 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 www.cnblogs.com/zszxz/p/12696920.html
Recomendado
Clasificación