SSM学习完后随想之Spring
2017-11-16 07:51
134 查看
谈谈SSM框架中的Spring
1.Spring是什么?Spring是因为理念而不是技术而称为Java世界最为成功的一个框架。
2.让Spring成功的核心理念是什么?
Spring最为核心的理念是IoC(Inversion of Control-控制反转)和AOP(Aspect Oriented Programming-面向切面编程)。
3.Spring的IoC是什么?
为什么我们需要使用Spring?因为我们想要开发程序的时候更简单和更专注。
那么Spring如何帮我们实现这两点的呢?那就是Spring的两个理念IoC和AOP。
IoC是现代产物。很久很久以前我们是“全面人”,那个时候什么都会的人很厉害;如今我们变成了“独面人”,现在对一种技术很“精”的人才厉害。我觉得IoC就是这种理念,将我们从“全面人”解放为“独面人”。让我们对自己不熟悉领域的时候做“伸手党”,向对这个领域专业的人给出自己的描述就获得自己需要的产品,这就让我们开发程序变得更简单。从而我们就节省了大量的时间和精力,就使我们开发自己擅长领域的程序变得更专注。
4.Spring的AOP是什么?
AOP也是现代产物。很久很久以前,我们做一件事要从头做到尾;如今我们做一件事只需要做最核心和最有技术性的部分。举个例子,以前厨师做菜需要先买菜、洗菜、做菜、洗锅;现在厨师只需要做菜。我们可以把这一整套流程总结为:获取原材料(买菜、洗菜)->对原材料进行加工(做菜)这个时候会出现判断,因为做菜会分为成功和失败。如果做成功了,菜就会让服务员端给顾客;如果做失败了,菜会被厨师扔掉。然后洗锅。这个过程其实可以类比我们在程序中应用AOP理念最多的情况,那就是数据库事务。流程如右:获取数据库连接->执行SQL,这个时候会出现判断执行SQL是否发生异常,如果没有发生异常就提交事务;如果发生了异常就回滚事务。最后都会关闭数据库连接。这个过程其实也让厨师的工作变得更简单和更专注。
5.Spring的IoC和AOP的区别是什么?
上面我们自己总结的Spring的IoC和AOP的理念都是让我们开发程序变得更简单和更专注,那么为什么把它们区分为两个理念呢?
这就是我们需要思考的问题,原因就是更简单和更专注是结果导向。IoC和AOP理念的区别在于实现理念的方法不同。
IoC在实现更简单和更专注这个结果时是通过这样一种方法:把我们不熟悉甚至无能为力的功能交给了熟悉和非常专业的人去做,我们只需要找到这个专业的人“class”,给出我们的特殊需求“property”,他们就会给我们一个名称为“id”的产品“bean”。然后我就可以通过名词“id”去使用这个特制的“bean”来实现功能了。然后我们就去开发自己熟悉和非常专业的产品。同样我们的产品在Spring这个大容器中也成为了一个bean和之前我们从别人手中拿来的bean一样,在程序中都会交给Spring这个大容器管理,这就是控制反转(IoC)了。我们自己开发的产品在使用的时候竟然也是Spring这个大容器进行管理的。所以IoC被称为了控制反转。
AOP在实现更简单和更专注这个结果时是通过这样一种方法:把拥有一套固定流程的事情拆分开来,找到最核心的步骤提取出来,其它的步骤固定下来,使得开发人员只需要专注于这个核心步骤的开发。
6.Spring是什么?
Spring是因为IoC和AOP理念而成为Java世界最为成功的框架。
我觉得用简单的话说:Spring的成功是因为“更简单更专注”或者说“专事专干”这个理念而成功的。这也是现代社会和互联网行业得以迅速发展的原因。
7.IoC?!
产生这个理念的需求?!
IoC生活的例子:很久很久以前我们是“全面人”,那个时候什么都会的人很厉害;如今我们变成了“独面人”,现在对一种技术很“精”的人才厉害。我觉得IoC就是这种理念,将我们从“全面人”解放为“独面人”。
IoC开发的例子:电商网站开发,我熟悉商品交易流程,但是对财务不熟悉,而团队中有人对财务处理熟悉,在交易的过程中,商品交易流程需要调用财务的相关接口,才得以实现。我不会自己去开发财务接口,我期望是:①熟悉财务的人去开发财务接口(class)②接口的逻辑尽量简单,内部复杂的业务不需要我自己去了解,我只需要简单调用就能使用③通过简单的描述就能获取这个接口实例且描述应该尽量简单(id和property)。–取自《JavaEE互联网轻量级整合开发》P210-P211
Java开发中更专业的解释?!
IoC是以“更简单更专注”这个基础理念在Java世界里发展而成专业级理念——控制反转。
控制反转(Inversion of Control)是一种通过描述(在Java中可以是XML或者注解)并通过第三方去产生或获取特定对象的方式。实现控制反转的是IoC容器,实现方法是依赖注入(DI反射的形式创建对象)。最大好处是降低对象之间的耦合。绝大多数情况下使用ApplicationContext作为SpringIoC容器。
我们放弃对Bean的控制权,将Bean的控制权完全交给SpringIoC容器
8.AOP?!
产生这个理念的需求?!
通过动态代理技术,将代码织入到对应的流程环节中。
AOP生活的例子:很久很久以前,我们做一件事要从头做到尾;如今我们做一件事只需要做最核心和最有技术性的部分。
9.动态代理
代理必须分为两个步骤:
①代理对象和真实对象之间建立代理关系。
②实现代理对象的代理逻辑方法。
JDK动态代理必须使用接口。
本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗Ctrl + B
斜体
Ctrl + I
引用
Ctrl + Q
插入链接
Ctrl + L
插入代码
Ctrl + K
插入图片
Ctrl + G
提升标题
Ctrl + H
有序列表
Ctrl + O
无序列表
Ctrl + U
横线
Ctrl + R
撤销
Ctrl + Z
重做
Ctrl + Y
Markdown及扩展
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Ma
4000
rkdown Extra , 扩展了很多好用的功能。具体请参考Github.
表格
Markdown Extra 表格语法:项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
Markdown Extra 定义列表语法:项目1
项目2
定义 A
定义 B
项目3
定义 C
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:@requires_authorization def somefunc(param1='', param2=0): '''A docstring''' if param1 > param2: # interesting print 'Greater' return (param2 - param1 + 1) or None class SomeClass: pass >>> message = '''interpreter ... prompt'''
脚注
生成一个脚注1.目录
用[TOC]来生成目录:
谈谈SSM框架中的Spring
快捷键
Markdown及扩展
表格
定义列表
代码块
脚注
目录
数学公式
UML 图
离线写博客
浏览器兼容
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.行内公式,数学公式为:Γ(n)=(n−1)!∀n∈N。
块级公式:
x=−b±b2−4ac−−−−−−−√2a
更多LaTex语法请参考 这儿.
UML 图:
可以渲染序列图:Created with Raphaël 2.1.0张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。
或者流程图:
Created with Raphaël 2.1.0开始我的操作确认?结束yesno
关于 序列图 语法,参考 这儿,
关于 流程图 语法,参考 这儿.
离线写博客
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 [/i] 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
浏览器兼容
目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。IE9以下不支持
IE9,10,11存在以下问题
不支持离线功能
IE9不支持文件导入导出
IE10不支持拖拽文件导入
这里是 脚注 的 内容. ↩
相关文章推荐
- SpringBoot学习之整合SSM+pagehelper+druid+单元测试
- 17年2月27日Java后台学习记录,SSM架构最终配置,Spring回滚机制。
- 基于SSM的秒杀业务学习[1] spring/ mybatis/springmvc整合及配置
- SSH与SSM学习之Spring16——Spring中AOP之使用配置文件配置
- SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库
- SSH与SSM学习之Spring17——Spring中AOP之使用注解配置
- SSH与SSM学习之SSH整合09——Spring的aop事务
- 17年2月24日Java后台学习记录,Spring Maven更换版本报错,SSM框架整合,Mysql语句整理。
- SSM(Spring+SpringMVC+MyBatis)框架学习心路历程【二】
- 学习笔记——SSM框架(eclipse4javaee)spring-framework版本问题
- 学习SSM框架笔记四:Spring注解
- SSH与SSM学习之Spring01——介绍、搭建环境与第一个例子
- SSH与SSM学习之Spring09——Spring使用注解配置
- SSH与SSM学习之Spring11——Spring中的AOP
- SSH与SSM学习之Spring19——Spring事务之事务基础
- SSH与SSM学习之Spring02——bean元素配置
- SSM(Spring+SpringMVC+MyBatis)框架学习心路历程【一】
- SSH与SSM学习之Spring03——Spring创建对象的方式
- SSM框架:Spring、Spring MVC、MyBatis学习
- SSH与SSM学习之SSH整合02——单独配置Spring容器