Práctica de inyección de 4 XML de Spring's IoC (Inversión de control)

En el artículo anterior, aprendí cómo inyectar valores simples. Dado que hay muchos tipos que se pueden inyectar, probémoslo aquí.
Por ejemplo, defina dos clases User.javay UserAddress.java: defina los siguientes atributos
en la User.javaclase:

private int age;
private String name;
private String[] hobbeys;
private List<String> cards;
private Map<String, String> girlfirends;
private Set<String> houses;
private UserAddress address;

Luego genere el método de setsuma correspondiente get. En UserAddress.javala definición:

private String address;

De producción similares set, gety toStringmétodos pueden ser.
Luego, comience a escribir los beans.xmldocumentos correspondientes , puede consultar el documento oficial: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-collection-elements
para escribir conveniencia, puede beans.xmlhacer clic derecho en la parte superior del archivo Split Vertically, y el efecto es el siguiente:
Inserte la descripción de la imagen aquí
más conveniente. Entonces puedes empezar.

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="weizu" class="com.weizu.pojo.User">
        <property name="age" value="23"></property>
        <property name="name" value="张三"></property>
        <property name="hobbeys">
            <array>
                <value>抽烟</value>
                <value>喝酒</value>
            </array>
        </property>
        <property name="cards">
            <list>
                <value>123131231312</value>
                <value>123131231312</value>
            </list>
        </property>
        <property name="girlfirends">
            <map>
                <entry key="one" value="对象1"/>
                <entry key="two" value="对象2"/>
            </map>
        </property>
        <property name="houses">
            <set>
                <value>北京</value>
                <value>上海</value>
            </set>
        </property>
        <property name="address">
            <null/>
        </property>
    </bean>
</beans>

prueba:

import com.weizu.pojo.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class myTest {
    
    

    @Test
    public void Test(){
    
    
        // create and configure beans
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User userService = (User) context.getBean("weizu");
        System.out.println(userService.toString());
    }
}

resultado:
Inserte la descripción de la imagen aquí


Vídeo de referencia: https://www.bilibili.com/video/BV1WE411d7Dv?p=9&spm_id_from=pageDriver
Documento de referencia: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html # elementos-colección-frijoles

Cuando hay varios beans-xxx.xmlarchivos diferentes , puede definir un total XMLy luego usar la importimportación en él, como:

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

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>

services.xmlDebe estar en una posición classpath location, mientras que las dos posiciones traseras deben estar resourcesdebajo, estos caminos son relativos al camino. Por supuesto, esta ruta se puede especificar como una ruta absoluta, como: file:C:/config/services.xmlo classpath:/config/services.xml.
En Spring IoCel barco, puede alojar varios bean, en el momento de la configuración, algunos de los datos se pueden configurar de la siguiente manera:

  • classCalificación, la beancategoría designada ;
  • nameEl beannombre de instanciación especificado ;
  • scopeEspecificado beanrango de acción, hay opcional singleton,, prototype, request, session, application, websocketde forma predeterminada singleton, cada uno representa un Spring IoCsolo recipiente, la presencia de beanla instancia de objeto; prototyperepresenta un beanposibles prometedores varias instancias; requestrepresenta un único HTTPejemplo de solicitud única; sessionDel mismo modo también a una HTTPde SessionIndividual instancia; applicationsignifica ServletContextinstancia única websocketen WebSocketmedio ; significa instancia única en medio;

El método de designación específico es el siguiente:

<bean id="accountService" class="com.something.DefaultAccountService" scope="singleton"/>

Supongo que te gusta

Origin blog.csdn.net/qq_26460841/article/details/115041065
Recomendado
Clasificación