Spring框架是Java应用最广的框架,它的成功来源于理念,而不是技术本身。它的理念包括IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。
Spring是一个轻量级的DI/IoC和AOP容器的开源框架。Spring提倡以“最少侵入”的方式来管理应用中的代码,这意味着可以随时安装或卸载Spring。
Spring中的术语:
- 框架:是能完成一定功能的半成品。框架能够帮助我们完成的是:项目的整体框架,一些基础功能,规定了类和对象如何创建,如何协作等。
- 非侵入式设计:从框架的角度可以理解为:无需继承框架提供的任何类。
- 轻量级和重量级:轻量级是相对于重量级而言的,轻量级一般就是非入侵性的,所依赖的东西非常少,资源占用非常少,部署简单等等,其实就是比较容易使用。
- JavaBean:即符合JavaBean规范的Java类
- POJO:即Plain Old Java Objects,简单老式Java对象。它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类和接口。
- 容器:在日常生活中,容器就是一种盛放东西的器具,从程序设计角度看就是装对象的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。
注意:bean的各种名称,虽然Spring用bean或者JavaBean来表示应用组件,但不意味着Spring组件必须遵循JavaBean规范,一个Spring组件中可以是任意形式的POJO。
Spring的优势:
- 低侵入、低耦合(降低组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面和惯例)
- 方便集成其他框架(如Mybatis)
- 降低Java开发难度
- Spring框架中包括了J2EE三层的每一层解决方案(一站式)
Spring能做什么
- Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。
- Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
- Spring能非常简单的帮我们管理数据库事务。
- Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
- Spring还提供与第三方Web框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
- Spring能方便与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
Spring的框架结构

- Data Access/Integration层包含JDBC、ORM、OXM、JMS和Transaction模块。
- Web层包含了web、web-servlet、webSocket、web-porlet模块。
- AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
- Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
- Test模块支持使用JUnit和TestNG对Spring组件进行测试。
Spring IoC和DI简介
IoC:Inverse of Control(控制反转),就是将原本在程序中手动创建对象的控制权,交由Spring框架。
创建对象方式:
传统方式:通过new关键字主动创建一个对象。
IOC方式:对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。IOC是反转控制(Inversion Of Control)的缩写,就像控制权从本来在自己手里,交给了Spring。
DI:Dependency Injection(依赖注入),指Spring创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象。
AOP简介
AOP:Aspect Oriented Program 面向切面编程。在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发,然后把切面功能和核心业务功能“编织”在一起。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
AOP当中的概念:
- 切入点(Pointcut):在哪些类,哪些方法上切入(Where)。
- 通知(Adice):在方法执行的什么时候(when:方法前/方法后/方法前后)做什么。(what:增强的功能)
- 切面(Aspect):切面=切入点+通知,通俗点就是:在什么时机,什么地方,做什么增强。
- 织入(Weaving):把切面加入到对象,并创建出代理对象的过程。
posted on
浙公网安备 33010602011771号