spring的特点

轻量级:

指的是Spring是“非侵入性”的,耦合内聚你懂吗?spring是“高内聚,低耦合的"就是spring和代码中的其它组件耦合性比较低,引入spring,其它代码并不需要作相应的修改来适应它。打个比方,把项目所有代码比作一桶石灰,如果加入的是油(Spring),因为它和石灰不反应,所以石灰不会变,但如果加入的是水(其它高耦合组件),石灰就会发生化学反应。所以说spring(油)是非侵入性的,水是侵入性会影响其它代码。

 说一下另一个概念”轻量级“,就是指Spring框架在初始化的时候不用加载所有服务,为了节约资源。以前流行的EJB就是”重量级“,每次初始化必须加载所有服务!

依赖注入:

​Spring的一个好处就是不用再用原始的方式new一个对象了,可以由spring容器(相当于是一个j工厂模式)来提供已经创建好的对象,注入到应用程序中就可以了。如果从应用程序的角度看,这就是”控制反转“,把实例化对象的控制权交给应用程序来解决。

面向切面编程:

就是Spring的 aop,个人认为这是spring里面最难的一个概念,​大概的理解一下吧,入门级的时候理解个大概意思,等实践的时候你才会知道怎么用的。

盗来的图

如上图所示,在应用程序中每个模块都要有它的”日志系统“”事务管理“​”安全认证“,它们交织在一起,如果我们要修改日志的形式,需要修改的代码非常多。

盗来的图

​如果我们使用了aop,输入的数据先进过日志、事务等控制模块,然后再流向实际的业务模块,而日志、事务这些控制模块看起来就像一道切面,切在数据流的中间。所有的数据流都要流经它们。举个粟子吧,一群人小朋友(各个模块)睡觉之前要刷牙(日志系统),洗头(事务管理),洗脚(安全认证),我们可以准备一套牙刷,一个洗头室,一个洗脚盆让他们排除洗(听上去有点不卫生哈哈),让他们排队洗,这样就不用每个人都定制了,公用一下(增加代码重用性)。具体怎么弄,得写代码,这个暂时不详述,大家这里先了解一下就好。

容器:​

Spring​容器真的”容器”这个词太形象,容器里面是是Bean,它通过配置文件知道哪些是它管理的bean。一般的对象不能叫bean,只有spring容器初始化,装配和管理的对象才叫bean哦,

框架:

Spring​是一个架子,这个架子其实就是xml文件或都说注解,“砖头(各种组件)”都是挂在注解或xml文件上的,这样就组成了一个应用程序。  spring就像一棵树干,其它组件就像树的枝和叶挂在上面。这个树怎么挂怎么嵌都是xml文件和注解规定好的。

一站式:​

Spring​上可以挂各种组件,最后变成一个完整的应用程序。这些组件可以是它自己一套的springMVC和springJDBC,也可用外部对应的struts2和mybatis.

原文地址:https://www.cnblogs.com/19322li/p/11050386.html