6.学习IoC/DI

1.概念的理解

  • IOC(控制反转):全称为:Inverse of Control。从字面上理解就是控制反转了,将对在自身对象中的一个内置对象的控制反转,反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建。
  • DI(依赖注入):全称为Dependency Injection,意思自身对象中的内置对象是通过注入的方式进行创建。
    那么IOC和DI这两者又是什么关系呢?
      IOC就是一种软件设计思想,DI是这种软件设计思想的一个实现。而Spring中的核心机制就是DI。

2.IoC的两种设计模式

  • 2.1 工厂模式
    某个类中定义用于提供依赖对象的方法,这个方法可以是一个单纯的虚方法,也可以是具有默认实现的虚方法,至于方法声明的返回类型,可以是一个接口或者抽象类,也可以是未被封闭(Sealed)的具体类型。作为它的派生类型,它可以实现或者重写工厂方法以提供所需的具体对象。
    Bean、Context的创建是典型的工厂模式
  • 2.2反射模式
    在运行状态中,根据提供的类的路径或类名,通过反射来动态获取该类的所有属性和方法。
  • Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
  • 当我们输入一个队长或者类并向调用它的属性和方法时,一按 (“.”)点号,编译器就会自动列出它的属性或方法,这里就会用到反射。

3.DI(依赖注入)的两种注入方式

3.1构造器注入

  • 构造器注入是在Bean构造过程中执行的


    构造器.png

3.2Setter注入

  • Setter注入是在Bean示例创建完毕之后执行
    setter.png

总结

  • Spring引入Autowire(自动装配)机制就是为了解决<bean>标签下<property>标签或<constructor-arg>标签过多的问题
  • 对于强依赖,可使用构造器注入,对于弱依赖,推荐使用Setter注入

4.配置和使用

配置方式有

  • xml形式


    xml.png

-注解形式


注解形式.png

5.依赖注入的例子

  • 消息服务接口和实现类


    消息服务器接口.png

    实现类.png
  • 打印器类


    打印器类.png
  • 配置文件


    创建配置文件.png
  • 应用主类


    主应用类.png
  • 运行结果

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容