一、spring是什么,有什么用?
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQyLTkwZTViNmQ0MjU0YTQxZDE5NTFlMmEzMDZlYzZhZTQ3LnBuZw%3D%3D.png?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQyLTU4YmRkNTA1YzFmNjQ5MGE5OGJiYTNmOTJjN2UxMTY2LmdpZg%3D%3D.gif?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ0LTZiNDVjMTk4NjMzZDQ4N2I5M2ZiYmMzNTU4ZGM1M2Y2LnBuZw%3D%3D.png?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ2LTE5YjZmOWFlNDQ1ZTQ4ZjE4OTM3ZWM4MDk0ODhhMDAyLmdpZg%3D%3D.gif?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ2LTE5YjZmOWFlNDQ1ZTQ4ZjE4OTM3ZWM4MDk0ODhhMDAyLmdpZg%3D%3D.gif?w=700&webp=1)
例如:
使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。
侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。
使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。
侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ2LTE5YjZmOWFlNDQ1ZTQ4ZjE4OTM3ZWM4MDk0ODhhMDAyLmdpZg%3D%3D.gif?w=700&webp=1)
一句话:spring是一个轻量级的非侵入式的控制反转和面向切面的容器框架。这里非侵入式是我们写的代码不会对框架产生依赖,可方便的迁移到其他地方,控制反转是说不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传给对象,面向切面是说我们开发的时候仅仅完场业务逻辑,切面分离了业务逻辑和系统级服务,这样我们就能进行内聚性的开发。
二、spring框架
spring定义了七个模块
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ3LTBmOGI3YjEyZTRiZjQ5YTY5MDJiYmY5ZmQzYzQ5MzIzLnBuZw%3D%3D.png?w=700&webp=1)
下面我们对这个框架图进行讲解:
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDQ5LTRiYjkzZTEyMjkxMjQwODA5YmU0ZjZkZjY2NzJhMTE3LnBuZw%3D%3D.png?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDUxLTIxZWFjMWM0N2Q0NjQzZjBiZDI2YTY2OTA5YzA4NzY2LnBuZw%3D%3D.png?w=700&webp=1)
![Spring自学教程-介绍、特点、框架(一) Spring自学教程-介绍、特点、框架(一)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbml0YmxvZy5jb20vYmxvZy80Nzk2MzEvMjAxMzEyLzIyMTczMDUyLWI0NTcxMmZlNGEyZjQwZThhMDBmZTlhZTYzZWU4NmRkLnBuZw%3D%3D.png?w=700&webp=1)