Spring框架之IoC和DI 川长思鸟来 2022-12-04 14:58 136阅读 0赞 ### **一、IoC(Inversion of Control):** ### ** 控制反转:指的是将对象的创建权交给 Spring 去创建。使用 Spring 之前,对象的创建都是由我们自己在代码中new创建。而使用 Spring 之后。对象的创建都是由给了 Spring 框架。具体交给BeanFactory和ApplicationContext这两个容器完成。** **底层实现:** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQxODAzNjkz_size_16_color_FFFFFF_t_70][] **1、BeanFactory** 是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在org.springframework.beans.factory.BeanFactory中被定义。常被使用的是 **XmlBeanFactory** 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。现在**开发常用的是ApplicationContext,它继承了BeanFactory类**,因此功能方面的啥的更为强大。 **2、ApplicationContext** ①BeanFactory和ApplicationContext的区别: 1、BeanFactory: 老版本 调用getBean()的时候,才会产生类的实例 2、ApplicationContext: 新版本 ApplicationContext继承了BeanFactory 加载配置文件的时候就将Spring管理的类都实例化 ②最常被使用的 ApplicationContext 接口实现: 1、ClassPathXmlApplicationContext: 加载类路径的配置文件 2、 FileSystemXmlApplicationContext:加载磁盘上的配置的文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); ### **二、DI(Dependency Injection)** ### Dependency Injection,是指依赖的对象不需要手动调用 setXX 方法去设置,而是通过配置赋值。 比如:在JavaWeb开发的过程当中,我们可以帮service层和dao层交给Spring管理。在没学习框架之前,我们都是利用service层调用到层,但是交给Spring管理之后,我们可以将到层注入近service层中。如图: <!--配置Service--> <bean id="customerService" class="com.crm.service.impl.CustomerServiceImpl"> <!--Service中使用dao层 注入Dao的属性--> <property name="customerDao" ref="customerDao"/> </bean> <!--配置Dao--> <bean id="customerDao" class="com.crm.dao.impl.CustomerDaoImpl"> <!--注入hibernate--> </bean> [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzQxODAzNjkz_size_16_color_FFFFFF_t_70]: /images/20221123/ba59fda330744220ba81c1acb4246007.png
还没有评论,来说两句吧...