浅谈Spring

目录

一、前言

二、Spring的特点

1、方便解耦,简化开发

2、AOP编码的支持

3、方便集成各种优秀框架

4、降低JavaEE API的使用难度

5、声明事务的支持

6、方便程序的测试

7、Java 源码是经典学习范例

三、Spring的优势

1、低侵入式设计,代码污染极低

2、独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

3、Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦。

4、Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用 

5、Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

6、Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

四、Spring核心是什么

1、AOP

2、IOC

3、依赖倒置原则(来源于网上)

4、具体过程(来源于网上)

五、DI是什么

六、 属性 注入的方式

1、Set注入

2、构造注入

3、依赖注入

七、注入集合属性 

八、Spring的生命周期

1、五个步骤

 2、七个步骤

 九、Spring创建Bean的两种方式

1、创建普通的bean对象

2、创建bean工厂(需要定义类继承工厂接口)


一、前言

在学习Spring框架前,我们肯定要先知道什么是Spring,我们都知道JavaWeb开发基本上需要用到各种框架,而Spring就是比较流行的一种。Spring框架是一个开放源代码的Java EE(就是用于开发B/S的程序 企业级)编程领域的一个轻量级开源框架。且具有很高的凝聚力和吸引力,从而解决了企业应用开发的复杂性。其中的轻量级就是使用最少代码启动框架,然后根据你的需求选择,选择你喜欢的模块使用,并且Spring提供了表示层,服务层,持久层的所有支持。

二、Spring的特点

1、方便解耦,简化开发

在说解耦之前我们要了解什么叫耦合

耦合:就是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。在程序中对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。(实现高内聚低耦合)。

了解了耦合之后我们来了解一下解耦

解耦:简单来说就是解除耦合,也可以说是降低耦合度。因为模块之间是存在依赖关系的,所以必然是存在耦合的,我们不能完全杜绝耦合,只能尽最大程度降低耦合。而降低耦合的方法之一就是引入框架。

所以引入Spring框架可以实现将对象的创建和依赖关系的维护交给Spring来管理,这样就可以有效的避免编码时造成程序的过度耦合。将这些相关的代码交给Spring也让我们有更多的精力去实现上层的业务。

2、AOP编码的支持

AOP:为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。可以方便的实现对程序进行权限拦截和运行监控等功能。

3、方便集成各种优秀框架

Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。

4、降低JavaEE API的使用难度

Spring对JavaEE开发中很多难用的一些API(JDBC、JavaMail、远程调用等)都提供了封装,从而使得这些API的使用难度降低。

5、声明事务的支持

我们只需要通过配置就可以灵活地进行事务的管理,从而不需要我们去手动编程,大大提高了开发效率和质量。

6、方便程序的测试

Spring对Junit4支持,可以通过注解方便的测试Spring程序。

7、Java 源码是经典学习范例

Spring的源码设计精妙、结构清晰,处处体现出大师对Java设计模式灵活运用以及对Java技术的高深造诣。Spring框架源码无疑是Java技术的最佳实践范例。如果想在短时间内迅速提高自己的Java技术水平和应用开发水平,学习和研究Spring源码都将会给你带来巨大的收益。

三、Spring的优势

1、低侵入式设计,代码污染极低

低侵入式和高侵入式区别:简单来说去除此框架或者模块时,代码的改动大小。

低侵入式:就是去除此框架后,只需要修改一些配置信息。

2、独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

3、Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦。

4、Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用 

5、Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问

6、Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

四、Spring核心是什么

Spring的核心是两大部分:

AOP:面向切面编程。

IOC:控制反转。

1、AOP

AOP的概念可以看我上面所提到的,这里主要是对它的扩展,AOP是一个新的理论,它是对OOP编程(面向对象编程)的一种补充。面向对象是通过模块化的思想来实现,它根据需求的不同,分离出多个方法,每个方法都只完成属于自己的任务,它们间通过继承和多态来将彼此之间的关系连接起来。AOP则是希望将通用的需求功能从不相关的类当中分离出来,能够使得很多类共享一个任务,就算任务变更,也不需要大幅度修改类,只需要对该任务进行修改即可。(简单来说:AOP就是将通用的需求提取出来,封装成模块,然后供大家一起使用,然后当需求变更,就对该需求进行调整即可。实现方式是通过拦截,我们预先定义一组特性,使它具有拦截方法的功能,可以让你在执行方法之前和之后做你想做的业务,而我们使用的时候只需要的对应的方法或者类定义上面加上某一个特性就好了。

2、IOC

IOC(Inversion Of Control)控制反转,简单来说就是当我们没有使用框架创建对象时需要关键字new来实现,一个对象一个new,但是当我们使用Spring框架之后,我们不在需要new了而是直接获取。因为Spring不再需要你来创建,而是直接将其配置到配置文件中。就比如以前每次你出去钓鱼都需要自备鱼竿,而现在那里已经有人给你准备了你过去就只需要用就可以了是不是感觉要方便很多,帮你省去很多麻烦。而且这样做的优点不仅仅如此,当你的需求发生变更,需要对类名进行修改,如果是以前你就需要把new的所有数据都进行更改,如果是大程序你需要修改的地方是不可想象的,是不是很耗时耗力,但是如果是Spring的话,你就只需要简单的修改配置文件即可,维护就变得轻松简洁。

控制反转就是依赖倒置原则的一种代码设计的思路。那什么是依赖倒置原则了?

3、依赖倒置原则(来源于网上)

比如我们要设计一个车子,我们需要先设计轮子,然后根据轮子大小设计底盘,接着根据底盘设计车身,最后根据车身设计好整个汽车。这里就出现了一个“依赖”关系:汽车依赖车身,车身依赖底盘,底盘依赖轮子。

 这样我们维护就特别的麻烦,一个部分需要修改就需要全部进行修改 。

所以我们需要换一种思想:我们先设计汽车的大概样子,然后根据汽车的样子来设计车身,根据车身来设计底盘,最后根据底盘来设计轮子。这时候,依赖关系就倒置过来了:轮子依赖底盘, 底盘依赖车身, 车身依赖汽车。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值