学完Spring,Spring几种属性注入(三):setter方法注入,p命名空间,SPEL和集合注入
(一)Setter方法注入:
Setter注入可以说就是DI(依赖注入),只是我们一开始学习DI的时候没有去合理的去总结它,现在我们重新的看一个例子:
先创建2个实体类Address和person:在Person类中我们有两个Address类型的引用变量属性,那我们该如何去进行注入呢?
先bean一个address的实例对象并把我们需要传入的普通类型参数注入进去。然后我们再bean一个person类的实例对象并把普通属性注入进去,引用属性我们可以通过address实例bean的id来进行注入
注意:对于普通属性来说:而对于引用属性来说:
P空间命名:
p空间命名可以简单来说就是setter方法注注入进行简化,对“setter方法注入”进行简化,替换 property name=“属性名”>,而是在
<bean p:属性名=“普通值” p:属性名-ref=“引用值”>
p命名空间使用前提,必须添加命名空间:再让我们看看Spring配置文件中该如何去写:
我们使用p命名空间后,无需再bean标签里面再增加一些property子标签进行属性注入。
当然我们学好property标签就可以了。p标签能会就会,不会也无所谓。纯粹得瑟性技术(~ ̄▽ ̄)~
SPEL:
对进行统一编程,所有的内容都使用value
< property name="" value="#{表达式}">
我们基本的SPEL表达式的使用常用的就以下几种:
#{123}、#{‘jack’} : 数字、字符串(字符串需要加上单引号)
#{beanId} :另一个bean引用(可以省略ref引用了)
#{beanId.propName} :操作数据
#{beanId.toString()} :执行方法
#{T(类).字段|方法} :静态方法或字段
接下来我们举一个简单例子:
我们创建一个简单的实体类User并直接在实体类中给User类的成员变量属性cname传一个“jack”值:这时候我们想通过Spring配置文件注入:
同时我们也可以这么玩,传一个常用类 Character 类中的
toUpperCase() 方法(把字符串变成大写):但为了严谨,我们一般在变量后面加上了?,进行判断,如果有值就执行toUpperCase() 方法,没有值就不执行方法:
集合注入:
我们创建一个普通类,类中有数组,list和map集合以及properties类型的城边变量属性:对于这些类型我们该如何在Spring中添加属性呢?