Inyección de dependencia Di de Spring

1. El concepto de Spring de inyección di dependencia

Di inyección de dependencia, el propósito es asignar valores a las propiedades en el objeto

2. ¿Cuáles son los tipos de inyección de dependencia?

        1. Tipos de datos básicos
        2. Tipos de cadena
        3. Tipos de referencia
        4. Tipos de colección

3. Inyección de tipos de datos básicos y tipos de cadenas

        1. Primero introduce las dependencias que necesitamos

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.15.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
    </dependencies>

        2. Configurar el archivo de configuración de primavera

<bean id="user" class="guan.User">
<!--
    property :表示类中的属性值调用了set方法
    name:跟我们实体类中的属性名一致
    value:实体类中的属性名的值---只有基本类型和String类型才用value
-->
    <property name="name" value="张三"/>
    <property name="age" value="19"/>
</bean>

        3. Código

clase de entidad:

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class Usuario { 
    private String nombre; 
    privado Entero edad; 
}

        clase de prueba

prueba de usuario de clase pública { 
    public static void main(String[] args) { 
        //读取spring的位置文件
        ApplicationContext app=new ClassPathXmlApplicationContext("spring.xml"); 
        Usuario usuario = (Usuario) app.getBean("usuario"); 
        System.out.println(usuario); 
    } 
}

        2. Inyección de tipo de objeto

        clase de entidad

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class Usuario { 
    private String nombre; 
    privado Entero edad; 
    estudiante estudiante privado; 
}
@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class Student { 
    private String address; 
}

clase de prueba

public class UserTest { 
    public static void main(String[] args) { 
        //Lee el archivo de ubicación de spring 
        ApplicationContext app=new ClassPathXmlApplicationContext("spring.xml"); 
       //Obtén el objeto bean 
        User user = (User) app. getBean ("usuario"); 
        System.out.println(usuario); 
        
    } 
}

archivo de configuración

<bean id="usuario" clase="guan.Usuario"> 
    <propiedad nombre="nombre" valor="张三"/> 
    <propiedad nombre="edad" valor="19"/> 
    <propiedad nombre="estudiante " ref="stu"/> 
    <!--ref="stu":调用stu的id--> 
</bean> 
    <bean id="stu" class="guan.Student"> 
        <nombre de la propiedad="dirección " value="上海"/> 
    </bean> 
</beans>

        3. Inyección de tipos de colección

clase de entidad

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class Usuario { 
    private String nombre; 
    privado Entero edad; 
    estudiante estudiante privado; 
    //定义集合类型
    Lista privada como; 
}

prueba

public class UserTest { 
    public static void main(String[] args) { 
        //Lee el archivo de ubicación de spring 
        ApplicationContext app=new ClassPathXmlApplicationContext("spring.xml"); 
       //Obtén el objeto bean 
        User user = (User) app. getBean ("usuario"); 
        System.out.println(usuario); 
        //Obtener las propiedades de la colección 
        List<String> list= user.getLike(); 
        for (String l:list) { 
            System.out.println( l); 
        } 

    } 
}

archivo de configuración

<bean id="user" class="guan.User">
    <property name="name" value="张三"/>
    <property name="age" value="19"/>
    <property name="student" ref="stu"/>
    <!--ref="stu":调用stu的id-->
    <property name="like">
        <list>
            <value>玩游戏</value>
            <value>吃饭</value>
            <value>睡觉</value>
        </list>
    </property>
</bean>
    <bean id="stu" class="guan.Student">
        <property name="address" value="上海"/>
    </bean>

        4. Inyección de set colección

clase de entidad

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class User { 
    private String name; 
    private Integer age; 
    private Student student; 
    //definir el tipo de colección 
    private List like; 
    //definir el tipo de colección set 
    private Set hobby; 
}

clase de prueba

public class UserTest { 
    public static void main(String[] args) { 
        //Lee el archivo de ubicación de spring 
        ApplicationContext app=new ClassPathXmlApplicationContext("spring.xml"); 
       //Obtén el objeto bean 
        User user = (User) app. getBean ("usuario"); 
        System.out.println(usuario); 
        //Obtener las propiedades de la colección 
        List<String> list= user.getLike(); 
        for (String l:list) { 
            System.out.println( l); 
        } 

    } 
}

archivo de configuración

<bean id="user" class="guan.User">
    <property name="name" value="张三"/>
    <property name="age" value="19"/>
    <property name="student" ref="stu"/>
    <!--ref="stu":调用stu的id-->
    <property name="like">
        <list>
            <value>玩游戏</value>
            <value>吃饭</value>
            <value>睡觉</value>
        </list>
    </property>
    <property name="hobby">
        <set>
            <value>我爱你</value>
            <value>你爱我</value>
        </set>
    </property>
</bean>
    <bean id="stu" class="guan.Student">
        <property name="address" value="上海"/>
    </bean>
</beans>

        5. inyección de colección de mapas

clase de entidad

@Data 
@NoArgsConstructor 
@AllArgsConstructor 
public class User { 
    private String name; 
    private Integer age; 
    private Student student; 
    //Definir el tipo de colección 
    private List like; 
    //Define set collection type 
    private Set hobby; 
    //Create map collection 
    private Map map; 
}

archivo de configuración

<bean id="user" class="guan.User">
    <property name="name" value="张三"/>
    <property name="age" value="19"/>
    <property name="student" ref="stu"/>
    <!--ref="stu":调用stu的id-->
    <property name="like">
        <list>
            <value>玩游戏</value>
            <value>吃饭</value>
            <value>睡觉</value>
        </list>
    </property>
    <property name="hobby">
        <set>
            <value>我爱你</value>
            <value>你爱我</value>
        </set>
    </property>
    <property name="map">
        <map>
            <entry key="name" value="李四"/>
        </map>
    </property>
</bean>
    <bean id="stu" class="guan.Student">
        <property name="address" value="上海"/>
    </bean>
</beans>

        6. Inyección automática

interfaz

public interface StudentDao {
    public void add();
}

Clase de implementación

public class StudentDao01 implements StudentDao{
    //重写接口中方法
    @Override
    public void add() {
        System.out.println("==========studentDao01==========");
    }
}

prueba

public class StudentTest {
    public static void main(String[] args) {
        //读取spring的位置文件
        ApplicationContext app=new ClassPathXmlApplicationContext("spring02.xml");
        //获取bean对象
        StudentDao studentDao = (StudentDao) app.getBean("studentDao");
        studentDao.add();
    }
}

archivo de configuración

   <!--
        autowire:代表自动注入  有三个属性值
            byType:根据属性的类型自动注入
            byName:根据属性名自动注入
            no:默认值,不设置自动注入
    -->
    <bean id="studentController" class="zidong.StudentController" autowire="byType" />
    <bean id="studentDao" class="zidong.StudentDao02"></bean>
<!--    <bean id="studentDao01" class="zidong.StudentDao01"></bean>-->

solo puede tener una subclase

        7. Usa la inyección de anotaciones

clase de entidad

@Repository
//持久化层
public class StudentDao01 implements StudentDao {
    //重写接口中方法
    @Override
    public void add() {
        System.out.println("==========studentDao01==========");
    }
}

interfaz

public interface StudentDao {
    public void add();
}

capa de control

@Controller
//表示控制层注解,如何没有设置bean的id 默认为类的名称首字母小写
public class StudentController {
    @Autowired
    按照类型自动注入 如果想要用自己指定名字注入需要使用另一个注解配合使用
    private StudentDao studentDao;
    public void show(){
        studentDao.add();
    }
}

prueba

public class StudentTest01 {
    public static void main(String[] args) {
        //读取spring的位置文件
        ApplicationContext app=new ClassPathXmlApplicationContext("spring03.xml");
        //获取bean对象
        StudentController studentController = (StudentController) app.getBean("studentController");
        studentController.show();
    }
}

archivo de configuración

 <context:component-scan base-package="zhuru"/>

Supongo que te gusta

Origin blog.csdn.net/ne_123456/article/details/125267937
Recomendado
Clasificación