Java学习笔记 (十六) Spring框架

最近在学习spring,记录下自己对Spring框架的理解。

一、 是什么

(1)其实就是一个大容器,用来管理bean对象,但这里的bean对象和之间了解的JavaBean对象不一样,这里指的就是一个普通的Java类。

(2)那这个容器的作用是什么? 平时写代码时,如果A类里面的方法需要调用B类里面的方法,我们就需要将A类里面先要创建好B的对象,然后再A类对象里面调用B类对象的方法。这样就增加了代码的高耦合性,这种开发方式非常不利于项目后期的维护。Spring 就是解决这一问题的。这个容器中装着所有配置后的对象(即不再需要new对象,这个过程由spring框架完成),通过依赖注入的方式进行解耦

(3) 之前的们的代码类似于下图的第一个,齿轮就代表项目中的各个类,有着很高的耦合性,当其中一个模块出现问题后,其他的模块也会收到影响。使用Spring之后,就相当于给项目中添加了一个大的齿轮,项目中的其他齿轮通过这个大齿轮联系起来。
在这里插入图片描述

二、理解依赖注入和控制反转

其实这两个是一个概念,只不过是从不同的角度来看待的。

  1. 在Java中一个对象调用另外一个对象时,在传统模式下通常有两种方式
    在调用类中主动new 一个被调用类
    或者使用接口回调的方式
    以上两种方式都会造成一定的耦合。
  2. 控制反转 nversion of Control (IoC)
    使用Spring框架之后,调用者无需主动获取被依赖的对象。调用者只需要被动的接收Spring框架为调用者的成员变量赋值,由此可见,使用Spring框架之后,调用者有之前的主动获取被调用对象到被动接受Spring为其成员变量赋值。站在调用者的角度来说,这就是控制反转
  3. 依赖注入
    从Spring容器来讲,相当于Spring负责将被依赖的对象注入到调用者的成员变量。站在Spring角度来说,这就叫依赖注入。

三、Spring框架的主要特点

通过上述分析,可以发现使用Spring有两个明显的改变

  1. 所有的对象都有Spring来创建
  2. 当对象需要获取依赖对象时,无需主动创建,等Spring容器注入即可。

四、依赖注入的两种方式

依赖注入通常由一下两种方式

1.设值注入

这种方式的注入依赖调用者的成员变量的setter方法。

(1)先定义一个Student类用来作为被调用的对象
在这里插入图片描述
(2)然后在定义一个调用者类
在这里插入图片描述

(3)然后进行Spring中xml文件的配置
在这里插入图片描述其中id为该对象或接口的唯一标识,程序通过id来访问该Bean实例。class对应的具体实现类,此处不能再使用接口。

(4)Spring会自动检测每个bean定义的property元素的内容,Spring通过默认的类构造器创建每个bean实例之后,立即调用setter方法为bean的成员变量赋值。
在这里插入图片描述注意:这里为了方便期间,未使用面向接口编程,在实际应用阶段,Spring推荐用面向接口的方式编程,进将各组件的耦合关系提升到接口层次,便于后期的维护。

2、构造注入

就是采用构造方法对成员变量进行初始化

(1)将上面设值注入的Person类改为下图形式
在这里插入图片描述(2)然后在beans.xml文件中做如下修改
在这里插入图片描述其中constructor-arg标签用来传递构造函数的参数

3.两种注入方式的对比

更推荐用设值注入的方式,其所对应的类更符合JavaBean的写法,更加简洁、明了。

猜你喜欢

转载自blog.csdn.net/Time__Lc/article/details/89670132
今日推荐