Spring学习之IoC

阳光穿透心脏的1/2处 2024-04-19 15:13 116阅读 0赞

说到spring,大家都会津津乐道,什么依赖注入,什么控制反转,但是真的深入过源码了解吗,深入看过英文文档吗,自己尝试写过ioc吗,我相信大多数人都是没有的,我也是如此,所以在深入学习spring的时候做一下笔记,希望帮到自己的同时也能帮助你们。


IoC:Inversion of Control,控制反转。

Inversion:控制,控制对象的创建和销毁(生命周期)

Control:将对象的控制权交给IOC容器


Q:为什么要把对象的控制权交给IoC容器,交给IoC容器有什么好处?

A:自己控制对象,都得自己主动创建对象,销毁对象,更换代码的时候,代价很大,得在代码层面找到所有原对象,进行修改。


Q:如何创建一个Bean,交由 Spring 容器管理?

A:加入 spring 核心库和测试

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-core</artifactId>
  5. <version>5.1.3.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework</groupId>
  9. <artifactId>spring-context</artifactId>
  10. <version>5.1.3.RELEASE</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>junit</groupId>
  14. <artifactId>junit</artifactId>
  15. <version>4.12</version>
  16. <scope>test</scope>
  17. </dependency>
  18. </dependencies>

编写 spring.xml 配置 bean

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--将一个Bean交由Spring创建并管理-->
  7. <bean id="myBean" class="csdn.ch.spring.ioc.Bean"/>
  8. </beans>

编写 自己的 Bean

  1. /**
  2. * 自定义一个Bean 交给Spring 管理
  3. *
  4. * @author chenhao
  5. * @version 1.0.0
  6. * @since 1.0.0
  7. *
  8. * Created at 2019-09-19 14:45
  9. */
  10. public class Bean {
  11. public Bean() {
  12. System.out.println("调用Bena的构造方法。。。");
  13. }
  14. }

测试

  1. import org.junit.Test;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. /**
  5. * 测试 ioc 控制bean
  6. *
  7. * @author chenhao
  8. * @version 1.0.0
  9. * @since 1.0.0
  10. *
  11. * Created at 2019-09-19 14:47
  12. */
  13. public class IoCtest {
  14. @Test
  15. public void test() {
  16. ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
  17. Bean myBean = context.getBean("myBean", Bean.class);
  18. System.out.println("myBean= " + myBean);
  19. }
  20. }

测试结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5oYW9fY19o_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Spring学习IoC

    到spring,大家都会津津乐道,什么依赖注入,什么控制反转,但是真的深入过源码了解吗,深入看过英文文档吗,自己尝试写过ioc吗,我相信大多数人都是没有的,我也是如此,所...

    相关 SpringIOC

    2.1、IOC本质控制反转 IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现Ioc的一种方法,也有人认为DI只是oC的另一种说法

    相关 SpringIOC

    spring容器 spring容器的概念,容器这个名字起的相当好,容器可以放很多东西,我们的程序启动的时候会创建spring容器,会给spring容器一个清单,清单中列出

    相关 SpringIOC

    高内聚,低耦合 内聚是指模块内部成员之间的联系。耦合是指模块与模块之间的联系。 IOC:控制反转(Inversion of Control,英文缩写为IoC)是一

    相关 Spring学习IOC和DI

    首先我想明确它们之间的关系: IOC:控制反转,把创建对象的过程交给Spring去管理,自己不做任何关注。 DI:依赖注入,向Bean里的属性进行设值。 D

    相关 springIOC学习笔记

    一、IOC(控制反转) 软件开发原则:高内聚,低耦合。 有一个A功能需要实现 高内聚:现在在一个B类中就能完成A功能,现在B类就是内聚 低耦合:现在需要C类和D类一