基于:【狂神说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开发中使用。