Spring的IOC

IOC的概念

  1. 概念:

    Inversion of Control ,控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理。

    之前我们创建对象是使用User user = new User(); 这样的形式,是我们主动创建的,但是使用IOC之后,我们不再创建对象,而是由Spring来创建,我们直接使用User对象就可以了,如下示例:

    1
    2
    3
    4
    5
    //1、加载Spring配置文件
    ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");

    //2、获取配置文件创建的对象
    User user = context.getBean("user", User.class);
  2. 目的:

    降低耦合度

IOC底层原理

​ 利用XML解析、工厂模式、反射实现。

​ 第一步:

​ xml配置文件,配置创建的对象。

1
<bean id="dao" class="com.ligangit.UserDao"></bean>

​ 第二步:

​ 在UserService类中调用UserDao类,创建工厂类。

1
2
3
4
5
6
7
class UserDaoFactory{
public static UserDao getDao(){
String classValue = "com.ligangit.UserDao"; //1、xml解析,得到class属性值
Class clazz = Class.forName(classValue); //2、通过反射创建对象
return (UserDao)clazz.newInstance();
}
}

​ 在UserService中使用

1
UserDao dat = UserDaoFactory.getDao();

IOC容器实现方式:(两个接口)

  • BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用,加载配置文件的时候不创建对象,在获取对象(使用)才去创建,比较费时,但是省内存
  • ApplicatonContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用,加载配置文件的时候创建对象,可以在服务器启动的时候完成所有需要对象的创建,让耗时耗资源的操作,都交给服务器去做,所以这个接口比BeanFactory更好。

最后更新: 2020年06月24日 17:58

原始链接: http://ligangit.com/2020/06/24/Spring-IOC/

× 请我吃糖~
打赏二维码