一、spring是什么,有什么用?
![](https://images0.cnblogs.com/blog/479631/201312/22173042-90e5b6d4254a41d1951e2a306ec6ae47.png)
![](https://images0.cnblogs.com/blog/479631/201312/22173042-58bdd505c1f6490a98bba3f92c7e1166.gif)
![](https://images0.cnblogs.com/blog/479631/201312/22173044-6b45c198633d487b93fbbc3558dc53f6.png)
![](https://images0.cnblogs.com/blog/479631/201312/22173046-19b6f9ae445e48f18937ec809488a002.gif)
![](https://images0.cnblogs.com/blog/479631/201312/22173046-19b6f9ae445e48f18937ec809488a002.gif)
例如:
使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。
侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。
使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。
使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。
侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。
非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。
![](https://images0.cnblogs.com/blog/479631/201312/22173046-19b6f9ae445e48f18937ec809488a002.gif)
一句话:spring是一个轻量级的非侵入式的控制反转和面向切面的容器框架。这里非侵入式是我们写的代码不会对框架产生依赖,可方便的迁移到其他地方,控制反转是说不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传给对象,面向切面是说我们开发的时候仅仅完场业务逻辑,切面分离了业务逻辑和系统级服务,这样我们就能进行内聚性的开发。
二、spring框架
spring定义了七个模块
![](https://images0.cnblogs.com/blog/479631/201312/22173047-0f8b7b12e4bf49a6902bbf9fd3c49323.png)
下面我们对这个框架图进行讲解:
![](https://images0.cnblogs.com/blog/479631/201312/22173049-4bb93e12291240809be4f6df6672a117.png)
![](https://images0.cnblogs.com/blog/479631/201312/22173051-21eac1c47d4643f0bd26a66909c08766.png)
![](https://images0.cnblogs.com/blog/479631/201312/22173052-b45712fe4a2f40e8a00fe9ae63ee86dd.png)