DI的全称是Dependency injection(依赖注入),它与控制反转(Ioc)的含义相同
IOC :在使用Spring框架之后,对象的实例不再由调用者来创建,也就是不用再new一个对象,而是初始化spring容器,从容器中获取对象,由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的代码直接控制,这样,控制权由应用代码转到了Spring容器,控制权发生了反转,这就是控制反转
1.创建一个接口
public interface UserDao {
public void say();
}
2.创建一个接口实现类
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("我是UserDao");
}
}
3.配置bean
<bean id="userDao" class="com.ithema.ioc.UserDaoImpl"></bean>
4.写一个测试类
public static void main(String[] args) {
// 1.初始化spring容器 ,加载配置文件
ApplicationContext applicationcontext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取userDao实例
UserDao userDao = (UserDao)applicationcontext.getBean("userDao");
//3.调用实例方法
userDao.say();
}
5.输出
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
我是UserDao
DI:从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相对于调用者注入了它依赖的实例 ,这就是Spring的依赖注入。