Spring学习总结第五篇

一、DI依赖注入

Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入set方式注入拓展方式注入(p命令和c命令空间)

1.1 构造方法注入

上一章已经讲过了,包括有参构造以及无参构造方式。

1.2 set方式注入(重点)

  • 依赖:bean对象的创建依赖于容器。
  • 注入:bean对象中的所有属性,由容器注入。

【环境搭建】

  • 创建Address和Student实体类,创建多种复杂类型
//Address
private String address;
//Student
private String name;//String类型
private Address address;//应用类型
private String[] books;//数组
private List<String> hobbys;//List集合
private Map<String,String> card;//Map集合
private Set<String> games;//Set集合
private String wife;//空值
private Properties info;//配置类
  • applicationContext.xml配置文件(常用的是第一个和第二个,其他了解即可)
<bean id="address" class="com.dmj.entity.Address">
    <property name="address" value="花果山水帘洞"/>
</bean>
<bean id="student" class="com.dmj.entity.Student">
    <!--第一个:普通值,使用value-->
    <property name="name" value="孙悟空"/>
    <!--第二个:bean,使用ref-->
    <property name="address" ref="address"/>
    <!--第三个:数组-->
    <property name="books">
        <array>
            <value>西游记</value>
            <value>水浒传</value>
            <value>红楼梦</value>
            <value>三国演义</value>
        </array>
    </property>
    <!--第四个:list-->
    <property name="hobbys">
        <list>
            <value>听歌</value>
            <value>看电影</value>
        </list>
    </property>
    <!--第五个:map-->
    <property name="card">
        <map>
            <entry key="身份证" value="111111111111111111"/>
            <entry key="银行卡" value="222222222222222222"/>
        </map>
    </property>
    <!--第六个:set-->
    <property name="games">
        <set>
            <value>王者荣耀</value>
            <value>和平精英</value>
        </set>
    </property>
    <!--第七个:null-->
    <property name="wife">
        <null/>
    </property>
    <!--第八个:配置类类型-->
    <property name="info">
        <props>
            <prop key="username">root</prop>
            <prop key="password">123456</prop>
        </props>
    </property>
</bean>
  • 测试类
public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.toString());
    }
}
  • 运行结果
    在这里插入图片描述
    在这里插入图片描述

1.3 拓展方式注入

我们可以使用p命名空间和c命名空间方式进行注入,但是不能直接使用,前提得导入xml约束

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
  • User实体类。注意:创建无参构造以及有参构造
private String name;
private int age;
  • applicationContext.xml配置文件
<!--p命名空间注入,可以直接注入属性的值:代替property-->
<bean id="user1" class="com.dmj.entity.User" p:name="猪八戒" p:age="18"/>
<!--c命名空间注入,通过构造器注入:代替construct-args-->
<bean id="user2" class="com.dmj.entity.User" c:name="沙悟净" c:age="20"/>
  • 测试类
public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = (User) context.getBean("user1");
        System.out.println(user);
    }
}
  • 运行结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值