真不知道我是太饿了 还是太饿了 还是太饿了,文章标题是Spring1-基础知识我尽然打成了鸡翅.
这一篇文章说白了就是洗脑的,让你知道Spring有多好,当然他本来就很好,学起来也别其它框架要简单,例如hibernate,struts等.
但是如果要深入了解他的代码却有点困难,当然我觉得是有点吃力的.
好了废话不多说,我们开始吧.
基础知识
什么是Spring
这里我给大家找了三家网站收集的面试题
并发编程网 - ifeve.com
importnew
oschina
至于说我为什么要找这三篇呢,因为在谷歌第一页的前几条嘛.
这三个面试题都有提到过什么是Spring,但是他们的说的都不一样.那么可能有人要问,对于初学者来说我到底记住那个答案呢?
对于这种理论的,我个人认为没有统一的答案全靠自己的理解,所以我对这种理论的东西都是先不去管,等我学完了后再根据自己的理解做总结,最后在谷歌所搜看看别人是怎么理解的.
那废话了这么多,我还是说一下我个人对Spring的理解吧.
Spring就是基于IOC和AOP的一个框架,并且为我们提供了一些基础解决方案,例如事务控制.
控制反转和依赖注入
控制反转(Inversion of Control),简称IoC.同时控制反转也叫做依赖注入.它们两个是一样.
有人可能就是不觉得它们是一样的,就觉得控制反转就是控制反转,依赖注入就是依赖注入.
他们可能认为控制反转就是,我们不使用new
关键字来创建对象,而是让Spring帮我们创建对象和管理对象的生命周期,当我们用到这个对象的时候就从IoC容器中取出.事实上这是对的.我们的IoC容器就是帮我们做这个事情的.
然而他们又认为,依赖注入是让对象初始化的时候,这个对象中用到哪些对象就将哪些对象注入到此对象想中,就像我们后面要说的注入SessionFactory一样.
额...这样理解我不知道是不是正确的,但是我推荐大家看一下Spring官方文档推荐的一片文章Inversion of Control Containers and the Dependency Injection pattern这是一篇英文文章,当然国内有大神已经将它翻译为中文了IoC容器和Dependency Injection模式.总之我个人觉得非常不错,老人的经验之谈.
AOP
AOP面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护.
也就是说我们可以将一些重复代码,例如事务,日志等.进行抽取统一编码维护.
Spring框架组成
Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。
下面我详细说说这些模块
核心容器
主要组成有
spring-core
,spring-beans
,spring-context
,spring-context-support
和spring-expression
(Spring表达式语言)模块.其中
spring-core
,spring-beans
为Spring框架提供了基础.spring-context
模块: 这个模块建立在基础模块上,提供了对框架的访问方式,例如通过ApplicationContext
接口来获取IoC容器中Bean.例如
ApplicationContext applicationContext = new ClassPathXmlApplicationContext();
applicationContext.getBean("BeanName");
spring-context-support
模块: 将第三方库集成到Spring中,例如缓存 邮件 任务调度等.
AOP
spring-aop
模块: 提供了标准的AOP面向编程.允许我们自定义方法拦截器或切入点.
spring-aspects
模块: 提供与AspectJ的集成.
数据访问/集成
spring-jdbc
模块: 提供了一个JDBC抽象层,可以为我们省区繁琐的JDBC编码.
spring-orm
模块: 提供了ORM框架的集成.例如hibernate.
Web
spring-web
模块: 提供基本的面向Web的集成功能.
spring-webmvc
模块: (也称为Web-Servlet模块)包含用于Web 应用程序的模型视图控制器和REST Web Services实现.
Spring下载地址
Spring教程,这个是某论坛的翻译官网的.