1、认识 Spring 框架
Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术自己,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。html
什么是 Spring:
- Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,来源于 Rod Johnson 在其著做《Expert one on one J2EE design and development》中阐述的部分理念和原型衍生而来。
- Spring 提倡以“最少侵入”的方式来管理应用中的代码,这意味着咱们能够随时安装或者卸载 Spring
- 适用范围:任何 Java 应用
- Spring 的根本使命:简化 Java 开发
尽管 J2EE 可以遇上 Spring 的步伐,但 Spring 并无中止前进, Spring 继续在其余领域发展,而 J2EE 则刚刚开始涉及这些领域,或者尚未彻底开始在这些领域的创新。移动开发、社交 API 集成、NoSQL 数据库、云计算以及大数据都是 Spring 正在涉足和创新的领域。Spring 的前景依然会很美好。web
Spring 中经常使用术语:
- 框架:是能完成必定功能的半成品。
框架可以帮助咱们完成的是:项目的总体框架、一些基础功能、规定了类和对象如何建立,如何协做等,当咱们开发一个项目时,框架帮助咱们完成了一部分功能,咱们本身再完成一部分,那这个项目就完成了。
- 非侵入式设计:
从框架的角度能够理解为:无需继承框架提供的任何类
这样咱们在更换框架时,以前写过的代码几乎能够继续使用。
- 轻量级和重量级:
轻量级是相对于重量级而言的,轻量级通常就是非入侵性的、所依赖的东西很是少、资源占用很是少、部署简单等等,其实就是比较容易使用,而重量级正好相反。
- JavaBean:
即符合 JavaBean 规范的 Java 类
- POJO:即 Plain Old Java Objects,简单老式 Java 对象
它能够包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口。
注意:bean 的各类名称——虽然 Spring 用 bean 或者 JavaBean 来表示应用组件,但并不意味着 Spring 组件必须遵循 JavaBean 规范,一个 Spring 组件能够是任意形式的 POJO。数据库
- 容器:
在平常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的的对象,由于存在放入、拿出等操做,因此容器还要管理对象的生命周期。
Spring 的优点
- 低侵入 / 低耦合 (下降组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面和惯例)
- 方便集成其余框架(如MyBatis、Hibernate)
- 下降 Java 开发难度
- Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
Spring 能帮咱们作什么
- ①.Spring 能帮咱们根据配置文件建立及组装对象之间的依赖关系。
- ②.Spring 面向切面编程能帮助咱们无耦合的实现日志记录,性能统计,安全控制。
- ③.Spring 能很是简单的帮咱们管理数据库事务。
- ④.Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,并且本身也提供了一套JDBC访问模板来方便数据库访问。
- ⑤.Spring 还提供与第三方Web(如Struts1/二、JSF)框架无缝集成,并且本身也提供了一套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组件进行测试。
2、Spring AOP 简介编程
若是说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被普遍使用。缓存
AOP 即 Aspect Oriented Program 面向切面编程
首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。安全
- 所谓的核心业务,好比登录,增长数据,删除数据都叫核心业务
- 所谓的周边功能,好比性能统计,日志,事务管理等等
周边功能在 Spring 的面向切面编程AOP思想里,即被定义为切面框架
在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发,而后把切面功能和核心业务功能 "编织" 在一块儿,这就叫AOP性能
AOP 的目的
AOP可以将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减小系统的重复代码,下降模块间的耦合度,并有利于将来的可拓展性和可维护性。学习
AOP 当中的概念:
- 切入点(Pointcut)
在哪些类,哪些方法上切入(where)
- 通知(Advice)
在方法执行的什么实际(when:方法前/方法后/方法先后)作什么(what:加强的功能)
- 切面(Aspect)
切面 = 切入点 + 通知,通俗点就是:在什么时机,什么地方,作什么加强!
- 织入(Weaving)
把切面加入到对象,并建立出代理对象的过程。(由 Spring 来完成)
一个例子
为了更好的说明 AOP 的概念,咱们来举一个实际中的例子来讲明:测试
在上面的例子中,包租婆的核心业务就是签合同,收房租,那么这就够了,灰色框起来的部分都是重复且边缘的事,交给中介商就行了,这就是 AOP 的一个思想:让关注点代码与业务代码分离!

3、推荐阅读:Spring相关资源
注:以上内容转载自博客园 原文做者:我没有三颗心脏 原文地址:https://www.cnblogs.com/wmyskxz/p/8820371.html