Spring框架(二)DI依赖注入

基于:【狂神说Java】Spring5最新完整教程IDEA版通俗易懂

1 简介

当使用bean创建对象的时候,可以使用构造器注入参数值、set方法注入参数值。还可以使用其他第三方注入。
依赖注入(Dependency Injection):采用set注入的方式;

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

2 例子实体类

public class User {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String,String> card;
    private Set<String> games;
    private String girlFriend;
    private Properties info;
}

几乎涵盖了需要注入的各种类型。

3 注入

3.1 基本数据类型+String

<property name="name" value="刘建国"/>

3.2 引用类型

<bean id="beijing" class="xyz.cqulwj.pojo.Address">
    <constructor-arg name="address" value="北京市"/>
</bean>

<property name="address" ref="beijing"/>

3.3 数组类型

<property name="books" >
    <array>
        <value>《三体》</value>
        <value>《朝花夕拾》</value>
        <value>《骆驼祥子》</value>
    </array>
</property>

3.4 List列表

<property name="hobbies">
    <list>
        <value>抽烟</value>
        <value>喝酒</value>
        <value>烫头</value>
    </list>
</property>

3.5 Map类型

<property name="card">
    <map>
        <entry key="学生卡" value="152151"/>
        <entry key="交通卡" value="51551"/>
    </map>
</property>

3.6 Set集合

<property name="games">
    <set>
        <value>绝地求生</value>
        <value>英雄联盟</value>
    </set>
</property>

3.7 空值

<property name="girlFriend">
    <null/>
</property>

3.8 properties类型

<property name="info">
    <props>
        <prop key="处分">高中期间曾经由于外出上网被保安抓住处500元罚款</prop>
        <prop key="奖励">大学因教育室友不要外出上网奖励500元现金</prop>
    </props>
</property>

3.9 运行结果

User{
	name='刘建国', 
	address=Address{address='北京市'}, 
	books=[《三体》, 《朝花夕拾》, 《骆驼祥子》], 
	hobbies=[抽烟, 喝酒, 烫头], 
	card={学生卡=152151, 交通卡=51551}, 
	games=[绝地求生, 英雄联盟], 
	girlFriend='null', 
	info={处分=高中期间曾经由于外出上网被保安抓住处500元罚款, 奖励=大学因教育室友不要外出上网奖励500元现金}
}

4 p命名空间(property注入)

beans.xml中添加p命名空间:
xmlns:p="http://www.springframework.org/schema/p"
然后使用p命名空间对简单的类型进行注入:

<bean id="user" class="xyz.cqulwj.pojo.User" p:name="刘建国">

5 c命名空间(constructor注入)

添加命名空间:
xmlns:c="http://www.springframework.org/schema/c"
使用c命名空间注入:

<bean id="user" class="xyz.cqulwj.pojo.User" c:name="王大刚">

由于采用的是构造器注入,所以必须要有这个参数的构造器

6 bean的作用域

当调用getBean()的时候。配置在bean中scope="prototype"

  • Singleton:内存中只有一个bean对应类的对象,默认实现;
  • prototype:原型,每一次get都会创建一个对象。
  • request、session、application再web开发中使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值