(一)Setter方法注入:

Setter注入可以说就是DI(依赖注入),只是我们一开始学习DI的时候没有去合理的去总结它,现在我们重新的看一个例子:

先创建2个实体类Address和person:

springboot 如何进行setter注入 spring的setter注入_实体类


springboot 如何进行setter注入 spring的setter注入_字符串_02

在Person类中我们有两个Address类型的引用变量属性,那我们该如何去进行注入呢?

springboot 如何进行setter注入 spring的setter注入_字符串_03

先bean一个address的实例对象并把我们需要传入的普通类型参数注入进去。然后我们再bean一个person类的实例对象并把普通属性注入进去,引用属性我们可以通过address实例bean的id来进行注入

注意:对于普通属性来说:

springboot 如何进行setter注入 spring的setter注入_java_04

而对于引用属性来说:

springboot 如何进行setter注入 spring的setter注入_spring_05

P空间命名:

p空间命名可以简单来说就是setter方法注注入进行简化,对“setter方法注入”进行简化,替换 property name=“属性名”>,而是在

<bean p:属性名=“普通值” p:属性名-ref=“引用值”>

p命名空间使用前提,必须添加命名空间:

springboot 如何进行setter注入 spring的setter注入_java_06

再让我们看看Spring配置文件中该如何去写:

springboot 如何进行setter注入 spring的setter注入_命名空间_07

我们使用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”值:

springboot 如何进行setter注入 spring的setter注入_spring_08

这时候我们想通过Spring配置文件注入:

springboot 如何进行setter注入 spring的setter注入_spring_09

springboot 如何进行setter注入 spring的setter注入_spring_10


同时我们也可以这么玩,传一个常用类 Character 类中的

toUpperCase() 方法(把字符串变成大写):

springboot 如何进行setter注入 spring的setter注入_实体类_11

但为了严谨,我们一般在变量后面加上了?,进行判断,如果有值就执行toUpperCase() 方法,没有值就不执行方法:

springboot 如何进行setter注入 spring的setter注入_字符串_12

集合注入:

我们创建一个普通类,类中有数组,list和map集合以及properties类型的城边变量属性:

springboot 如何进行setter注入 spring的setter注入_命名空间_13

对于这些类型我们该如何在Spring中添加属性呢?

springboot 如何进行setter注入 spring的setter注入_实体类_14

springboot 如何进行setter注入 spring的setter注入_java_15