天天看点

Spring框架(二)DI依赖注入1 简介2 例子实体类3 注入4 p命名空间(property注入)5 c命名空间(constructor注入)6 bean的作用域

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

目录

  • 1 简介
  • 2 例子实体类
  • 3 注入
    • 3.1 基本数据类型+String
    • 3.2 引用类型
    • 3.3 数组类型
    • 3.4 List列表
    • 3.5 Map类型
    • 3.6 Set集合
    • 3.7 空值
    • 3.8 properties类型
    • 3.9 运行结果
  • 4 p命名空间(property注入)
  • 5 c命名空间(constructor注入)
  • 6 bean的作用域

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

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命名空间对简单的类型进行注入:

5 c命名空间(constructor注入)

添加命名空间:

xmlns:c="http://www.springframework.org/schema/c"

使用c命名空间注入:

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

6 bean的作用域

当调用

getBean()

的时候。配置在bean中

scope="prototype"

  • Singleton:内存中只有一个bean对应类的对象,默认实现;
  • prototype:原型,每一次get都会创建一个对象。
  • request、session、application再web开发中使用。