Spring的属性注入
对于类成员变量,注入方式有三种
构造函数注入
属性setter方法注入
接口注入
Spring支持前两种
Spring的属性注入-杓造方法注入
通过构造方法注入Bean的属性值或依赖的対象,它保证了Bean实例在实例化后就可以使用。
构造器注入在<constructor-arg>元素里声明的属性
<constructor-arg name="xxx" value="xxx"/>
name为变量,value为你要设置的值
这种设置的方法,要设置的类必须要有有参的构造方法
Spring的属性注入-set方法注入
使用set方法注入,在Spring配置文件中,通过<property>设置注入的属性
<property name=" xxx " value="xxx"/>
name为变量,value为你要设置的值
这种设置方法,要设置的类必须有set方法
如果要设置的值有其它对象,则要配置Bean设置值,然后再通过
<property name="xxx" ref="xxx"/>
ref是你配置好的对象的bean的id
Spring的属性注入-p名称空间
使用p命名空间
为了简化XML文件配置, Spring从2.5开始引入一个新的p名称空间
p:<属性名>="xx"引入常量值(普通值)
p:<属性名>-ref="xxx"引用其它Bean対象(对象)
首先在xml中引入P命名空间
xmlns:p="http://www.springframework.org/schema/p"
<bean id="person" class="com.jiaoshou.ioc.demo4.Person" p:name="叫兽" p:age="18"/>
Spring的属性注入-SpEL注入
SpEL : spring expression language , spring表达式语言,对依赖注入进行简化
语法: #{表达式}
<bean id="" value="#{表达式}">
SpEL表达式语言
语法: #{}
#{ 'hello' } :使用字符串
#{beanId} :使用另一个bean
#{beanId.content.toUpperCase()}:使用指定名属性,并使用方法
#{T(java.lang.Math).PI} :使用静态字段或方法
复杂类型的属性注入
数组类型的属性注入
<property name="arrs">
<list>
<value>a1</value>
<value>a2</value>
<value>a3</value>
</list>
</property>
List集合类型的属性注入
<property name="list">
<list>
<value>b1</value>
<value>b2</value>
<value>b3</value>
</list>
</property>
Set集合类型的属性注入
<property name="set">
<set>
<value>c1</value>
<value>c2</value>
<value>c3</value>
</set>
</property>
Map集合类型的属性注入
<property name="map">
<map>
<entry key="k1" value="111"/>
<entry key="k2" value="222"/>
<entry key="k3" value="333"/>
</map>
</property>
Properties类型的属性注入
<property name="properties">
<props>
<prop key="username">admin</prop>
<prop key="password">123</prop>
</props>
</property>
网友评论