1.依赖注入:
Dependency Injection
2.IOC的作用
降低程序间的耦合(依赖关系)
3.依赖关系管理:
交给spring来维护
在当前类需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明。
依赖关系的维护,就称之为 依赖注入
4.依赖注入
4.1.能注入的数据:有3类
a.基本类型和String
b.其他bean类型(在配置文件或注解配置过的bean)
c.复杂类型/集合类型
4.2.注入的方式:有3种
a.使用构造函数提供
b.使用set方法提供
c.使用注解提供
1.使用构造函数注入
public class AccountServiceImpl implements IAccountService {
private String name;
private Integer age;
private Date birthday;
public AccountServiceImpl(String name, Integer age, Date birthday){
this.name = name;
this.age = age;
this.birthday = birthday;
}
}
<bean id="accountService" class="com.mydemo.service.impl.AccountServiceImpl">
<constructor-arg name="name" value="张三"/>
<constructor-arg name="age" value="23"/>
<constructor-arg name="birthday" ref="nowDate"/>
</bean>
<bean id="nowDate" class="java.util.Date"> </bean>
2.set方法注入(相比构造函数注入,set方法更常用)
public class AccountServiceImpl2 implements IAccountService {
private String name;
private Integer age;
private Date birthday;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setName(Date birthday) {
this.birthday = birthday;
}
}
<bean id="accountService2" class="com.mydemo.service.impl.AccountServiceImpl2">
<property name="name" value="张三"/>
<property name="age" value="23"/>
<property name="birthday" ref="nowDate"/>
</bean>
<bean id="nowDate" class="java.util.Date"> </bean>
3.复杂类型注入/集合类型
public class AccountServiceImpl3 implements IAccountService {
private String[] myArr;
private List<String> myList;
private Set<String> mySet;
private Map<String, String> myMap;
private Properties myProps;
}
<bean id="accountService3" class="com.mydemo.service.impl.AccountServiceImpl3">
<property name="myArr">
<array>
<value>AAA1</value>
<value>AAA2</value>
<value>AAA3</value>
</array>
</property>
<property name="myList">
<array>
<value>BBB1</value>
<value>BBB2</value>
<value>BBB3</value>
</array>
</property>
<property name="mySet">
<array>
<value>CCC1</value>
<value>CCC2</value>
<value>CCC3</value>
</array>
</property>
<property name="myMap">
<map>
<entry key="mkey1" value="mv111"></entry>
<entry key="mkey2" value="mv222"></entry>
</map>
</property>
<property name="myProps">
<map>
<entry key="pkey1" value="pv111"></entry>
<entry key="pkey2" value="pv222"></entry>
</map>
</property>
</bean>