目录
1.依赖注入
2.构造注入
3.p命名空间实现属性注入
------------------------------------华丽的分隔线------------------------------------
1.依赖注入
- 依赖注入也称为控制反转,可以理解为通过容器来实现对属性的赋值
列举几种注入的方式
// JavaBean类型
private User innerBean;
// List类型
private List<String> list;
// 数组类型
private String[] array;
// Set类型
private Set<String> set;
// Map类型
private Map<String, String> map;
// 注入空字符串值
private String emptyValue;
// 注入null值
private String nullValue = "init value";
在spring配置文件中注入方法如下
/**
* 属性注入;
*/
<bean id="entity" class="cn.kgc.springtest2.demo2.TestEntity">
<!--javaBean赋值 也可以使用property的ref属性来赋值-->
<property name="innerBean">
<bean class="cn.kgc.springtest2.demo2.User"></bean>
</property>
<!--list集合赋值-->
<property name="list">
<list>
<value>第一个数</value>
<value>第二个数</value>
<value>第三个数</value>
</list>
</property>
<!--Set赋值-->
<property name="set">
<set>
<value>set中的第一个数</value>
<value>set中的第二个数</value>
<value>set中的第三个数</value>
</set>
</property>
<!--array赋值-->
<property name="array">
<array>
<value>array中的第一个数</value>
<value>array中的第二个数</value>
<value>array中的第三个数</value>
</array>
</property>
<!--map赋值-->
<property name="map">
<map>
<entry value="美利坚合众国" key="USA"></entry>
</map>
</property>
<!--注入空字符串 ""-->
<property name="emptyValue">
<value></value>
</property>
<!--注入null ""-->
<property name="nullValue">
<null/>
</property>
</bean>
ps
需要注意的是spring为bean的属性赋值是通过调用属性的setter方法实现的,这种做法称为“设置注入”,而非直接给属性赋值
2.构造注入
- 在要注入的类中声明有参构造方法
- 注入方法如下
<bean id="userService" class="cn.kgc.springtest2.demo1.service.UserServiceImpl">
<!--构造注入-->
<constructor-arg name="name" value="小明"/>
<constructor-arg name="age" value="16"/>
/**
* 方法参数是javaBean类型时,可以通过ref属性来传入一个bean
* bean的声明;class属性为包路径
* <bean id="userdao" class="cn.kgc.springtest2.demo1.dao.UserDao">
*/
<constructor-arg name="userDao" ref="userdao"/>
</bean>
3.使用p命名空间实现属性
- 使用p命名空间前需要先添加p命名空间的声明
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//这一行↓
xmlns:p="http://www.springframework.org/schema/p"
//那一行↑
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
/**
* 这里实现属性注入
* 这个也是和依赖注入一样,通过setter方法注入
*/
<bean id="user" class="cn.kgc.springtest2.demo2.User" p:id="1" p:passWord="123456" p:userCode="admin"></bean>
</beans>