1
- # Table of Contents
2
-
1
+ # 目录
3
2
* [ Spring是什么] ( #spring是什么 )
4
3
* [ Spring能帮我们做什么] ( #spring能帮我们做什么 )
5
4
* [ 为何需要Spring] ( #为何需要spring )
6
5
* [ 为什么需要Spring及Spring的优点] ( #为什么需要spring及spring的优点 )
7
6
* [ 如何学好Spring] ( #如何学好spring )
8
7
9
8
10
- 原文出处: [ 张开涛] ( http://sishuok.com/forum/blogPost/list/0/2508.html )
9
+ 原文出处:[ 张开涛] ( http://sishuok.com/forum/blogPost/list/0/2508.html )
11
10
12
11
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
13
12
> https://github.com/h2pl/Java-Tutorial
@@ -46,11 +45,11 @@ Spring框架除了帮我们管理对象及其依赖关系,还提供像通用
46
45
## Spring能帮我们做什么
47
46
Spring除了不能帮我们写业务逻辑,其余的几乎什么都能帮助我们简化开发:
48
47
49
-
48
+
50
49
51
50
一、传统程序开发,创建对象及组装对象间依赖关系由我们在程序内部进行控制,这样会加大各个对象间的耦合,如果我们要修改对象间的依赖关系就必须修改源代码,重新编译、部署;而如果采用Spring,则由Spring根据配置文件来进行创建及组装对象间依赖关系,只需要改配置文件即可,无需重新编译。所以,Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。
52
51
53
-
52
+
54
53
55
54
二、当我们要进行一些日志记录、权限控制、性能统计等时,在传统应用程序当中我们可能在需要的对象或方法中进行,而且比如权限控制、性能统计大部分是重复的,这样代码中就存在大量重复代码,即使有人说我把通用部分提取出来,那必然存在调用还是存在重复,像性能统计我们可能只是在必要时才进行,在诊断完毕后要删除这些代码;还有日志记录,比如记录一些方法访问日志、数据访问日志等等,这些都会渗透到各个要访问方法中;
56
55
@@ -59,29 +58,29 @@ Spring除了不能帮我们写业务逻辑,其余的几乎什么都能帮助
59
58
60
59
有人可能说了,我们可以使用“代理设计模式”或“包装器设计模式”,你可以使用这些,但还是需要通过编程方式来创建代理对象,还是要耦合这些代理对象,而采用Spring 面向切面编程能提供一种更好的方式来完成上述功能,一般通过配置方式,而且不需要在现有代码中添加任何额外代码,现有代码专注业务逻辑。
61
60
62
- 所以,Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
61
+ 所以,Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
62
+
63
63
64
-
65
64
66
65
三、在传统应用程序当中,我们如何来完成数据库事务管理?需要一系列“获取连接,执行SQL,提交或回滚事务,关闭连接”,而且还要保证在最后一定要关闭连接,多么可怕的事情,而且也很无聊;如果采用Spring,我们只需获取连接,执行SQL,其他的都交给Spring来管理了,简单吧。所以,Spring能非常简单的帮我们管理数据库事务。
67
66
68
-
67
+
69
68
70
69
四、Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。
71
70
72
-
71
+
73
72
74
73
五、Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
75
74
76
-
75
+
77
76
78
77
六、Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
79
78
80
-
79
+
81
80
82
81
Spring能帮我们做这么多事情,提供这么多功能和与那么多主流技术整合,而且是帮我们做了开发中比较头疼和困难的事情,那可能有人会问,难道只有Spring这一个框架,没有其他选择?当然有,比如EJB需要依赖应用服务器、开发效率低、在开发中小型项目是宰鸡拿牛刀,虽然发展到现在EJB比较好用了,但还是比较笨重还需要依赖应用服务器等。那为何需要使用Spring,而不是其他框架呢?让我们接着往下看。
83
82
84
-
83
+
85
84
## 为何需要Spring
86
85
一 首先阐述几个概念
87
86
@@ -101,15 +100,15 @@ Spring能帮我们做这么多事情,提供这么多功能和与那么多主
101
100
102
101
8、Bean:一般指容器管理对象,在Spring中指Spring IoC容器管理对象。
103
102
104
-
103
+
105
104
106
105
## 为什么需要Spring及Spring的优点
107
106
108
107
●非常轻量级的容器:以集中的、自动化的方式进行应用程序对象创建和装配,负责对象创建和装配,管理对象生命周期,能组合成复杂的应用程序。Spring容器是非侵入式的(不需要依赖任何Spring特定类),而且完全采用POJOs进行开发,使应用程序更容易测试、更容易管理。而且核心JAR包非常小,Spring3.0.5不到1M,而且不需要依赖任何应用服务器,可以部署在任何环境(Java SE或Java EE)。
109
108
110
109
●AOP:AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,提供从另一个角度来考虑程序结构以完善面向对象编程(相对于OOP),即可以通过在编译期间、装载期间或运行期间实现在不修改源代码的情况下给程序动态添加功能的一种技术。通俗点说就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中;比如安全,日记记录,这些都是通用的功能,我们可以把它们提取出来,然后在程序执行的合适地方织入这些代码并执行它们,从而完成需要的功能并复用了这些功能。
111
110
112
- ● 简单的数据库事务管理:在使用数据库的应用程序当中,自己管理数据库事务是一项很让人头疼的事,而且很容易出现错误,Spring支持可插入的事务管理支持,而且无需JEE环境支持,通过Spring管理事务可以把我们从事务管理中解放出来来专注业务逻辑。
111
+ ●简单的数据库事务管理:在使用数据库的应用程序当中,自己管理数据库事务是一项很让人头疼的事,而且很容易出现错误,Spring支持可插入的事务管理支持,而且无需JEE环境支持,通过Spring管理事务可以把我们从事务管理中解放出来来专注业务逻辑。
113
112
114
113
●JDBC抽象及ORM框架支持:Spring使JDBC更加容易使用;提供DAO(数据访问对象)支持,非常方便集成第三方ORM框架,比如Hibernate等;并且完全支持Spring事务和使用Spring提供的一致的异常体系。
115
114
@@ -125,3 +124,34 @@ Spring能帮助我们简化应用程序开发,帮助我们创建和组装对
125
124
Spring核心是IoC容器,所以一定要透彻理解什么是IoC容器,以及如何配置及使用容器,其他所有技术都是基于容器实现的;
126
125
127
126
理解好IoC后,接下来是面向切面编程,首先还是明确概念,基本配置,最后是实现原理,接下来就是数据库事务管理,其实Spring管理事务是通过面向切面编程实现的,所以基础很重要,IoC容器和面向切面编程搞定后,其余都是基于这俩东西的实现,学起来就更加轻松了。要学好Spring不能急,一定要把基础打牢,基础牢固了,这就是磨刀不误砍柴工。
127
+
128
+
129
+ ## 微信公众号
130
+
131
+ ### 个人公众号:黄小斜
132
+
133
+ 黄小斜是跨考软件工程的 985 硕士,自学 Java 两年,拿到了 BAT 等近十家大厂 offer,从技术小白成长为阿里工程师。
134
+
135
+ 作者专注于 JAVA 后端技术栈,热衷于分享程序员干货、学习经验、求职心得和程序人生,目前黄小斜的CSDN博客有百万+访问量,知乎粉丝2W+,全网已有10W+读者。
136
+
137
+ 黄小斜是一个斜杠青年,坚持学习和写作,相信终身学习的力量,希望和更多的程序员交朋友,一起进步和成长!
138
+
139
+ ** 原创电子书:**
140
+ 关注公众号【黄小斜】后回复【原创电子书】即可领取我原创的电子书《菜鸟程序员修炼手册:从技术小白到阿里巴巴Java工程师》
141
+
142
+ ** 程序员3T技术学习资源:** 一些程序员学习技术的资源大礼包,关注公众号后,后台回复关键字 ** “资料”** 即可免费无套路获取。
143
+
144
+ ** 考研复习资料:**
145
+ 计算机考研大礼包,都是我自己考研复习时用的一些复习资料,包括公共课和专业的复习视频,这里也推荐给大家,关注公众号后,后台回复关键字 ** “考研”** 即可免费获取。
146
+
147
+ ![ ] ( https://img-blog.csdnimg.cn/20190829222750556.jpg )
148
+
149
+
150
+ ### 技术公众号:Java技术江湖
151
+
152
+ 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
153
+
154
+ ** Java工程师必备学习资源:** 一些Java工程师常用学习资源,关注公众号后,后台回复关键字 ** “Java”** 即可免费无套路获取。
155
+
156
+ ![ 我的公众号] ( https://img-blog.csdnimg.cn/20190805090108984.jpg )
157
+
0 commit comments