1.setter注入
1.1注入引用数据类型:
- 在bean中定义引用类型属性,并提供可访问的set方法
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
- 配置中使用property标签ref属性注入引用类型对象
<bean id="bookService" class="com.itzjy.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
</bean>
<bean id="bookDao" class="com.itzjy.dao.imipl.BookDaoImpl"/>
1.2注入简单数据类型
- 在类中声明对应的简单数据类型的属性,并提供对应的setter方法
public class BookDaoImpl implements BookDao {
private String databaseName;
private int connectionNum;
public void setConnectionNum(int connectionNum) {
this.connectionNum = connectionNum;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
- 在applicationContext.xml配置文件中使用property标签注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="com.itzjy.dao.impl.BookDaoImpl">
<property name="databaseName" value="mysql"/>
<property name="connectionNum" value="11"/>
</bean>
</beans>
注:value:后面跟的是简单数据类型,对于参数类型,Spring在注入的时候会自动转换
2.构造器注入
index属性和type属性选其一
-
简单数据类型
<bean ...> <constructor-arg name="" index="" type="" value=""/> </bean> -
引用数据类型
<bean ...> <constructor-arg name="" index="" type="" ref=""/> </bean>
3.自动配置
autowire属性:开启自动装配,分为按类型装配(byType)和按名称装配(byName)
<bean id="" class="" autowire=""/>
注:
对于依赖注入,需要注意一些其他的配置特征:
- 自动装配用于引用类型依赖注入,不能对简单类型进行操作
- 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
- 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
- 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
3.集合注入
常见的集合类型:
- 数组
- List
- Set
- Map
- Properties
3.1注入数组类型数据:
<property name="">
<array>
<value>100</value>
<value>200</value>
<value>300</value>
</array>
</property>
3.2注入List类型数据:
<property name="">
<list>
<value>11</value>
<value>bb</value>
<value>666</value>
<value>777</value>
</list>
</property>
3.3注入Set类型数据:
<property name="">
<set>
<value>11</value>
<value>bb</value>
<value>666</value>
<value>777</value>
</set>
</property>
3.4注入Map类型数据:
<property name="">
<map>
<entry key="country" value="china"/>
<entry key="province" value="zhejiang"/>
<entry key="city" value="hangzhou"/>
</map>
</property>
3.5注入Properties类型数据:
<property name="">
<props>
<prop key="country">china</prop>
<prop key="province">zhejiang</prop>
<prop key="city">taizhou</prop>
</props>
</property>
9489

被折叠的 条评论
为什么被折叠?



