一、依赖注入的介绍
依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现。在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。IOC 解耦只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让 Spring 来维护了。简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。注意: DI 依赖IOC环境的
二、Spring中依赖注入方式
2.1、setter注入——引用类型
在bean中定义引用类型属性并提供可访问的set
方法
配置中使用property
标签ref
属性注入引用类型对象
2.2、setter注入——简单类型
在bean中定义基本类型属性并提供可访问的set
方法
配置中使用property
标签value
属性注入简单类型数据
2.3、构造器注入——引用类型
在bean中定义引用类型属性并提供可访问的构造
方法
配置中使用constructor-arg
标签ref
属性注入引用类型数据
2.4、构造器注入——简单类型
在bean中定义基本类型属性并提供可访问的set
方法
配置中使用constructor-arg
标签value
属性注入简单类型数据
2.5、构造器注入——参数适配
配置中使用constructor-arg
标签type
属性设置按形参类型注入
配置中使用constructor-arg
标签index
属性设置按形参位置注入
三、依赖自动装配
配置中使用bean
标签autowire
属性设置自动装配的类型
依赖自动装配特征
四、注入集合数据
我们这里介绍注入数组,List,Set,Map,Properties。具体代码如下:
package com.etime.entity;
import java.util.*;
public class Test {
private String[] myStrs;
private List<String> myList;
private Set<String> mySet;
private Map<String,String> myMap;
private Properties myProps;
public Teacher() {
}
public String[] getMyStrs() {
return myStrs;
}
public void setMyStrs(String[] myStrs) {
this.myStrs = myStrs;
}
public List<String> getMyList() {
return myList;
}
public void setMyList(List<String> myList) {
this.myList = myList;
}
public Set<String> getMySet() {
return mySet;
}
public void setMySet(Set<String> mySet) {
this.mySet = mySet;
}
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
public Properties getMyProps() {
return myProps;
}
public void setMyProps(Properties myProps) {
this.myProps = myProps;
}
@Override
public String toString() {
return "Teacher{" +
"myStrs=" + Arrays.toString(myStrs) +
", myList=" + myList +
", mySet=" + mySet +
", myMap=" + myMap +
", myProps=" + myProps +
'}';
}
}
在Spring.xml文件中配置Test类(利用setter注入依赖集合数据)
<bean id="test" class="com.etime.entity.Test">
<property name="myStrs">
<array>
<value>abc</value>
<value>efg</value>
<value>kfc</value>
</array>
</property>
<property name="myList">
<list>
<value>123</value>
<value>234</value>
</list>
</property>
<property name="mySet">
<set>
<value>987</value>
<value>hfd</value>
</set>
</property>
<property name="myMap">
<map>
<entry key="a" value="aaaa"></entry>
<entry key="b" value="bbbb"></entry>
</map>
</property>
<property name="myProps">
<props>
<prop key="c">cccc</prop>
<prop key="d">dddd</prop>
</props>
</property>
</bean>
集合注入测试方法
@Test
public void t07(){
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
Test t = (Test) context.getBean("test");
System.out.println(t);
}
五、数据源对象管理
1、导入druid坐标
2、配置数据源对象作为spring管理的bean
六、加载properties文件
- 不加载系统属性
- 加载多个properties文件
- 加载所有properties文件
- 加载properties文件
标准格式
- 从类路径或jar包中搜索并加载properties文件