1、set注入方式
(1)简单注入
<bean name="person" class="com.linxin.spring.pojo.Person" scope="singleton">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
</bean>
(2)1对1注入
<!--
car:车类
person:人类
name与person属性一致
ref与bean name 一致
-->
<bean name="car" class="com.linxin.spring.pojo.Car" scope="singleton">
<property name="name" value="SUV"></property>
<property name="color" value="blue"></property>
</bean>
<bean name="person" class="com.linxin.spring.pojo.Person" scope="singleton">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
<property name="car" ref="car"></property>
</bean>
2、构造器注入
(1)新建有参数构造器
public Person(String name, Integer age, Car car) {
this.name = name;
this.age = age;
this.car = car;
}
(2)配置<bean>
<bean name="car" class="com.linxin.spring.pojo.Car" scope="singleton">
<property name="name" value="SUV"></property>
<property name="color" value="blue"></property>
</bean>
<bean name="person" class="com.linxin.spring.pojo.Person" scope="singleton">
<constructor-arg name="name" value="zhangsan" index="0"></constructor-arg>
<constructor-arg name="age" value="18" type="java.lang.Integer" ></constructor-
arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
// constructor-arg:注入构造器
属性:index:到出现参数顺序不同的构造器使用index="0/1/2"指定使用构造器。
type:当出现类型不同,参数名相同,使用type:指定数据类型,区别name
3.p名称注入
(1)引入名称空间
xmlns:p="http://www.springframework.org/schema/p"
(2)常用形式(配置数据源)
<bean id="myDataSource" class="org.apache.commoud.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/mydb"
p:username="root"
p:password="root"
/>
(3)实例
p:属性名=值类型
p:属性名-ref 表示引用类型
<bean name="person3" class="com.linxin.spring.pojo.Person"
p:name="zhangsan" p:age="18" p:car-ref="car"
></bean>
4.el表达式注入
<bean name="car" class="com.linxin.spring.pojo.Car" scope="singleton">
<property name="name" value="SUV"></property>
<property name="color" value="blue"></property>
</bean>
<bean name="person" class="com.linxin.spring.pojo.Person" scope="singleton">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
<property name="car" ref="car"></property>
</bean>
<bean name="person4" class="com.linxin.spring.pojo.Person">
<property name="name" value="#{person.name}"></property>
<property name="age" value="#{person.age}"></property>
<property name="car" ref="car"></property>
</bean>
// 调用name的person的值 #{person.name}
5.复杂类型注入
数组
<property name="car">
<array>
<value>自行车</value>
<value>自行车</value>
<value>自行车</value>
<ref bean="car"/>
</array>
</property>
List
<property name="list">
<list>
<value>自行车</value>
<value>自行车</value>
<value>自行车</value>
</list>
</property>
Set
<property name="set">
<set>
<value>自行车1</value>
<value>自行车2</value>
<value>自行车3</value>
</set>
</property>
// value值不能重复
Map
<property name="map">
<map>
<entry key="username" value="root></entry>
<entry key="car" value-ref="car"></entry>
<entry key-ref="person" value-ref="car"></entry>
</map>
</property>
// key名不能重复,不然取最后赋值
properties类型
<properties name="properties">
<props>
<prop key="username">root</prop>
<prop key="prassword">123456</prop>
</props>