spring主要有4种注入方式:
1、set方法注入
<!--set方式注入-->
<bean name="user" class="com.evergrande.User">
<property name="name" value="jack"></property>
<property name="age" value="18"></property>
<property name="c" ref="c"></property>
</bean>
<bean name="c" class="com.evergrande.car">
<property name="name" value="宾利"></property>
<property name="age" value="黄色"></property>
</bean>
2、构造方法注入
<!--构造函数注入-->
<!--name属性:构造函数的参数名
value属性:构造参数对应的值 必须和type对应否则会报错
index属性:构造函数的参数索引
type属性:构造函数参数的类型
-->
<bean name="user2" class="com.evergrande.User">
<constructor-arg name="name" value="cici" index="0" type="java.lang.String"></constructor-arg>
<constructor-arg name="c" ref="c" index="1" type="com.evergrande.car"></constructor-arg>
</bean>
3、p名称空间注入
<!--p名称空间注入 走set方法-->
<!--1、导入p名称空间 xmlns:p="http://www.springframework.org/schema/p"
2、使用p:属性完成注入
|-值类型:p:属性名="值"
|-对象类型:p:属性名-ref="bean名称"-->
<bean name="user3" class="com.evergrande.User" p:name="john" p:age="20" p:c-ref="c">
</bean>
4、spel注入
spring expression language表达式语言
<!--spel注入 和set类似
#{}中可以存放其他bean的值 但是引用类型不可以-->
<bean name="user4" class="com.evergrande.User">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user.age}"></property>
<property name="c" ref="c"></property>
</bean>