• Spring依赖注入


    Student类

    package com.spring;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    public class Student {
        public String name;
        public int age;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    xml文件

    
    <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="stu1" class="com.spring.Student">bean>
    
    
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1. set注入

    通过set方法赋值

    xml文件

    	<bean id="stu1" class="com.spring.Student">
            <property name="name" value="张三">property>
            <property name="age" value="18">property>
        bean>
    
    • 1
    • 2
    • 3
    • 4

    2. 构造器注入

    通过有参构造器赋值

    xml文件

    	<bean id="stu1" class="com.spring.Student">
            <constructor-arg value="张三" name="name">constructor-arg>
            <constructor-arg value="24">constructor-arg>
        bean>
    
    • 1
    • 2
    • 3
    • 4

    3. 特殊值处理

    赋值NULL

    	<bean id="stu1" class="com.spring.Student">
            <constructor-arg name="name">
                <null />
            constructor-arg>
            <constructor-arg value="24">constructor-arg>
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    xml实体

    如 < > 有特殊含义而不能直接使用

        <bean id="stu1" class="com.spring.Student">
            <constructor-arg value="<张三>" name="name">constructor-arg>
            <constructor-arg value="24">constructor-arg>
        bean>
    
    • 1
    • 2
    • 3
    • 4

    CDATA

    里面的内容将被原样解析

    CDATA不能直接写到属性中,可以写到子标签里

        <bean id="stu1" class="com.spring.Student">
            <constructor-arg name="name">
                <value>
                    ]]>
                value>
            constructor-arg>
            <constructor-arg value="24">constructor-arg>
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. 类(接口)类型赋值

    Clazz类

    package com.spring;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Clazz {
        private String clazzName;
        private int num;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Student类

    package com.spring;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @AllArgsConstructor
    @NoArgsConstructor
    @Data
    public class Student {
        public String name;
        public int age;
        private Clazz clazz;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4.1 外部Bean

    ref:引用IOC容器中某个Bean的id

        <bean id="clz1" class="com.spring.Clazz">
            <property name="clazzName" value="clz1">property>
            <property name="num" value="1">property>
        bean>
    
        <bean id="stu1" class="com.spring.Student">
            <property name="age" value="18">property>
            <property name="name" value="张三">property>
            <property name="clazz" ref="clz1">property>
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4.2 级联方式

    必须先实例化

        <bean id="stu1" class="com.spring.Student">
            <property name="age" value="18">property>
            <property name="name" value="张三">property>
            <property name="clazz" ref="clz1">property>
            <property name="clazz.clazzName" value="clz11">property>
            <property name="clazz.num" value="11">property>
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.3 内部Bean

    不能通过IOC容器直接获取

        <bean id="stu1" class="com.spring.Student">
            <property name="age" value="18">property>
            <property name="name" value="张三">property>
            <property name="clazz">
                <bean id="clazz1" class="com.spring.Clazz">
                    <property name="clazzName" value="clazz1">property>
                    <property name="num" value="1">property>
                bean>
            property>
        bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Stu类

    public class Stu {
        //1 数组类型属性
        private String[] courses;
        //2 list 集合类型属性
        private List<String> list;
        //3 map 集合类型属性
        private Map<String,String> maps;
        //4 set 集合类型属性
        private Set<String> sets;
        public void setSets(Set<String> sets) {
            this.sets = sets;
        }
        public void setCourses(String[] courses) {
            this.courses = courses;
        }
        public void setList(List<String> list) {
            this.list = list;
        }
        public void setMaps(Map<String, String> maps) {
            this.maps = maps;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    5. 数组属性注入

        
        <property name="courses">
            <array>
                <value>java课程value>
                <value>数据库课程value>
            array>
        property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6. List类型属性注入

    	
        <property name="list">
            <list>
                <value>张三value>
                <value>小三value>
            list>
        property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7. Map类型属性注入

    	
        <property name="maps">
            <map>
                <entry key="JAVA" value="java">entry>
                <entry key="PHP" value="php">entry>
            map>
        property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    8. Set类型属性注入

    	
        <property name="sets">
            <set>
                <value>MySQLvalue>
                <value>Redisvalue>
            set>
        property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9. 集合中设置对象类型

    	
    	<bean id="course1" class="com.atguigu.spring5.collectiontype.Course">
    	    <property name="cname" value="Spring5 框架">property>
    	bean>
    	
    	<bean id="course2" class="com.atguigu.spring5.collectiontype.Course">
    	    <property name="cname" value="MyBatis 框架">property>
    	bean>
    	
    	
    	<property name="courseList">
    	    <list>
    	        <ref bean="course1">ref>
    	        <ref bean="course2">ref>
    	    list>
    	property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    10. 集合的提取

    (1)在 spring 配置文件中引入名称空间 util
    (2)使用 util 标签完成集合注入提取

    	
    	<util:list id="bookList">
    	    <value>book1value>
    	    <value>book2value>
    	    <value>book3value>
    	util:list>
    	
    	
    	<bean id="book" class="com.atguigu.spring5.collectiontype.Book">
    	    <property name="list" ref="bookList">property>
    	bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    11. 使用p命名空间

    
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" >
    
    
        <bean id="clz1" class="com.spring.Clazz">
            <property name="clazzName" value="clz1">property>
            <property name="num" value="1">property>
        bean>
    
        <bean id="stu1" class="com.spring.Student" p:age="18" p:name="张三" p:clazz-ref="clz1">    bean>
    
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    mac 安装使用svn教程
    API是什么&API管理存在哪些问题,如何解决?
    【typescript】面向对象(下篇),包含接口,属性的封装,泛型
    Python遥感图像处理应用篇(十九):GDAL +numpy批量对遥感图像外围背景值进行处理
    ASP.NET Core 6框架揭秘实例演示[05]:依赖注入基本编程模式
    Vue_组件间通信
    Spring Data
    GIC/ITS代码分析(6)中断处理
    鸿蒙HarmonyOS实战-ArkUI动画(弹簧曲线动画)
    Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】
  • 原文地址:https://blog.csdn.net/weixin_52117223/article/details/128067184