• 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
  • 相关阅读:
    基于微信小程序的食堂窗口自助点餐系统设计与实现-计算机毕业设计源码和lw文档
    AI算法,又整新活!萌妹子来挑战~
    java读取csv文件或者java读取字符串,找出引号内容,采用正则表达式书写
    多叉树+图实现简单业务流程
    Java抽象类和普通类区别、 数组跟List的区别
    zookeeper源码学习笔记(一)
    Shell命令切换root用户、管理配置文件、检查硬件
    【从零开始学习 SystemVerilog】5.2、SystemVerilog 通信—— Semaphore(信号量)
    Unity 实现原神中的元素反应
    策略模式应用(内窥镜项目播放不同种类的视频)
  • 原文地址:https://blog.csdn.net/weixin_52117223/article/details/128067184