Skip to content

Commit 1f71970

Browse files
committed
Update Spring学习与面试.md
1 parent e84f4d1 commit 1f71970

File tree

1 file changed

+37
-82
lines changed

1 file changed

+37
-82
lines changed

docs/system-design/framework/Spring学习与面试.md

Lines changed: 37 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,79 @@
11

22

3-
# Spring相关教程/资料
3+
## Spring相关教程/资料
44

5-
> ## 官网相关
5+
### 官网相关
66

7-
[Spring官网](https://spring.io/)
7+
- [Spring官网](https://spring.io/)
8+
- [Spring系列主要项目](https://spring.io/projects)
9+
- [Spring官网指南](https://spring.io/guides)
10+
- [Spring Framework 4.3.17.RELEASE API](https://docs.spring.io/spring/docs/4.3.17.RELEASE/javadoc-api/)
811

9-
[Spring系列主要项目](https://spring.io/projects)
12+
## 系统学习教程
1013

11-
从配置到安全性,Web应用到大数据 - 无论您的应用程序的基础架构需求如何,都有一个Spring Project来帮助您构建它。 从小处着手,根据需要使用 - Spring是通过设计模块化的。
14+
### 文档
1215

13-
[Spring官网指南](https://spring.io/guides)
16+
- [极客学院Spring Wiki](http://wiki.jikexueyuan.com/project/spring/transaction-management.html)
17+
- [Spring W3Cschool教程 ](https://www.w3cschool.cn/wkspring/f6pk1ic8.html)
1418

15-
无论您在构建什么,这些指南都旨在尽可能快地提高您的工作效率 - 使用Spring团队推荐的最新Spring项目发布和技术。
19+
### 视频
1620

17-
[Spring官方文档翻译(1~6章)](https://blog.csdn.net/tangtong1/article/details/51326887)
21+
- [网易云课堂——58集精通java教程Spring框架开发](http://study.163.com/course/courseMain.htm?courseId=1004475015#/courseDetail?tab=1&35)
22+
- [慕课网相关视频](https://www.imooc.com/)
1823

19-
> ## 系统学习教程:
24+
- **黑马视频和尚硅谷视频(非常推荐):** 微信公众号:“**JavaGuie**”后台回复关键字 “**1**” 免费领取。
2025

21-
### 文档:
2226

23-
[极客学院Spring Wiki](http://wiki.jikexueyuan.com/project/spring/transaction-management.html)
27+
## 面试必备知识点
2428

25-
[Spring W3Cschool教程 ](https://www.w3cschool.cn/wkspring/f6pk1ic8.html)
26-
27-
### 视频:
28-
29-
[网易云课堂——58集精通java教程Spring框架开发](http://study.163.com/course/courseMain.htm?courseId=1004475015#/courseDetail?tab=1&35)
30-
31-
[慕课网相关视频](https://www.imooc.com/)
32-
33-
**黑马视频(非常推荐):**
34-
微信公众号:“**Java面试通关手册**”后台回复“**资源分享第一波**”免费领取。
35-
36-
> ## 一些常用的东西
37-
38-
[Spring Framework 4.3.17.RELEASE API](https://docs.spring.io/spring/docs/4.3.17.RELEASE/javadoc-api/)
39-
40-
默认浏览器打开,当需要查某个类的作用的时候,可以在浏览器通过ctrl+f搜索。
41-
42-
43-
# 面试必备知识点
44-
45-
46-
> ## SpringAOP,IOC实现原理
29+
### SpringAOP,IOC实现原理
4730

4831
AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己实现怎么实现一个IOC容器?这些东西都是经常会被问到的。
4932

50-
[自己动手实现的 Spring IOC 和 AOP - 上篇](http://www.coolblog.xyz/2018/01/18/自己动手实现的-Spring-IOC-和-AOP-上篇/)
33+
推荐阅读:
34+
35+
- [自己动手实现的 Spring IOC 和 AOP - 上篇](http://www.coolblog.xyz/2018/01/18/自己动手实现的-Spring-IOC-和-AOP-上篇/)
5136

52-
[自己动手实现的 Spring IOC 和 AOP - 下篇](http://www.coolblog.xyz/2018/01/18/自己动手实现的-Spring-IOC-和-AOP-下篇/)
37+
- [自己动手实现的 Spring IOC 和 AOP - 下篇](http://www.coolblog.xyz/2018/01/18/自己动手实现的-Spring-IOC-和-AOP-下篇/)
5338

54-
### AOP
39+
### AOP
5540

5641
AOP思想的实现一般都是基于 **代理模式** ,在JAVA中一般采用JDK动态代理模式,但是我们都知道,**JDK动态代理模式只能代理接口而不能代理类**。因此,Spring AOP 会这样子来进行切换,因为Spring AOP 同时支持 CGLIB、ASPECTJ、JDK动态代理。
5742

5843
- 如果目标对象的实现类实现了接口,Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类;
5944
- 如果目标对象的实现类没有实现接口,Spring AOP 将会采用 CGLIB 来生成 AOP 代理类——不过这个选择过程对开发者完全透明、开发者也无需关心。
6045

46+
推荐阅读:
6147

48+
- [静态代理、JDK动态代理、CGLIB动态代理讲解](http://www.cnblogs.com/puyangsky/p/6218925.html) :我们知道AOP思想的实现一般都是基于 **代理模式** ,所以在看下面的文章之前建议先了解一下静态代理以及JDK动态代理、CGLIB动态代理的实现方式。
49+
- [Spring AOP 入门](https://juejin.im/post/5aa7818af265da23844040c6) :带你入门的一篇文章。这篇文章主要介绍了AOP中的基本概念:5种类型的通知(Before,After,After-returning,After-throwing,Around);Spring中对AOP的支持:AOP思想的实现一般都是基于代理模式,在Java中一般采用JDK动态代理模式,Spring AOP 同时支持 CGLIB、ASPECTJ、JDK动态代理,
50+
- [Spring AOP 基于AspectJ注解如何实现AOP](https://juejin.im/post/5a55af9e518825734d14813f) : **AspectJ是一个AOP框架,它能够对java代码进行AOP编译(一般在编译期进行),让java代码具有AspectJ的AOP功能(当然需要特殊的编译器)**,可以这样说AspectJ是目前实现AOP框架中最成熟,功能最丰富的语言,更幸运的是,AspectJ与java程序完全兼容,几乎是无缝关联,因此对于有java编程基础的工程师,上手和使用都非常容易。Spring注意到AspectJ在AOP的实现方式上依赖于特殊编译器(ajc编译器),因此Spring很机智回避了这点,转向采用动态代理技术的实现原理来构建Spring AOP的内部机制(动态织入),这是与AspectJ(静态织入)最根本的区别。**Spring 只是使用了与 AspectJ 5 一样的注解,但仍然没有使用 AspectJ 的编译器,底层依是动态代理技术的实现,因此并不依赖于 AspectJ 的编译器**。 Spring AOP虽然是使用了那一套注解,其实实现AOP的底层是使用了动态代理(JDK或者CGLib)来动态植入。至于AspectJ的静态植入,不是本文重点,所以只提一提。
51+
- [探秘Spring AOP(慕课网视频,很不错)](https://www.imooc.com/learn/869):慕课网视频,讲解的很不错,详细且深入
52+
- [spring源码剖析(六)AOP实现原理剖析](https://blog.csdn.net/fighterandknight/article/details/51209822) :通过源码分析Spring AOP的原理
6253

63-
[※静态代理、JDK动态代理、CGLIB动态代理讲解](http://www.cnblogs.com/puyangsky/p/6218925.html)
64-
65-
我们知道AOP思想的实现一般都是基于 **代理模式** ,所以在看下面的文章之前建议先了解一下静态代理以及JDK动态代理、CGLIB动态代理的实现方式。
66-
67-
[Spring AOP 入门](https://juejin.im/post/5aa7818af265da23844040c6)
68-
69-
带你入门的一篇文章。这篇文章主要介绍了AOP中的基本概念:5种类型的通知(Before,After,After-returning,After-throwing,Around);Spring中对AOP的支持:AOP思想的实现一般都是基于代理模式,在JAVA中一般采用JDK动态代理模式,Spring AOP 同时支持 CGLIB、ASPECTJ、JDK动态代理,
70-
71-
[※Spring AOP 基于AspectJ注解如何实现AOP](https://juejin.im/post/5a55af9e518825734d14813f)
72-
73-
74-
**AspectJ是一个AOP框架,它能够对java代码进行AOP编译(一般在编译期进行),让java代码具有AspectJ的AOP功能(当然需要特殊的编译器)**,可以这样说AspectJ是目前实现AOP框架中最成熟,功能最丰富的语言,更幸运的是,AspectJ与java程序完全兼容,几乎是无缝关联,因此对于有java编程基础的工程师,上手和使用都非常容易
75-
76-
Spring注意到AspectJ在AOP的实现方式上依赖于特殊编译器(ajc编译器),因此Spring很机智回避了这点,转向采用动态代理技术的实现原理来构建Spring AOP的内部机制(动态织入),这是与AspectJ(静态织入)最根本的区别。
77-
78-
79-
[※探秘Spring AOP(慕课网视频,很不错)](https://www.imooc.com/learn/869)
80-
81-
慕课网视频,讲解的很不错,详细且深入
82-
83-
84-
[spring源码剖析(六)AOP实现原理剖析](https://blog.csdn.net/fighterandknight/article/details/51209822)
85-
86-
通过源码分析Spring AOP的原理
87-
88-
### IOC:
54+
### IOC
8955

9056
Spring IOC的初始化过程:
9157
![Spring IOC的初始化过程](https://user-gold-cdn.xitu.io/2018/5/22/16387903ee72c831?w=709&h=56&f=png&s=4673)
9258

93-
[[Spring框架]Spring IOC的原理及详解。](https://www.cnblogs.com/wang-meng/p/5597490.html)
94-
95-
[Spring IOC核心源码学习](https://yikun.github.io/2015/05/29/Spring-IOC核心源码学习/)
96-
97-
比较简短,推荐阅读。
98-
99-
[Spring IOC 容器源码分析](https://javadoop.com/post/spring-ioc)
100-
101-
强烈推荐,内容详尽,而且便于阅读。
102-
103-
> ## Spring事务管理
104-
105-
[可能是最漂亮的Spring事务管理详解](https://juejin.im/post/5b00c52ef265da0b95276091)
59+
- [[Spring框架]Spring IOC的原理及详解。](https://www.cnblogs.com/wang-meng/p/5597490.html)
10660

107-
[Spring编程式和声明式事务实例讲解](https://juejin.im/post/5b010f27518825426539ba38)
61+
- [Spring IOC核心源码学习](https://yikun.github.io/2015/05/29/Spring-IOC核心源码学习/) :比较简短,推荐阅读。
62+
- [Spring IOC 容器源码分析](https://javadoop.com/post/spring-ioc) :强烈推荐,内容详尽,而且便于阅读。
10863

109-
> ## 其他
64+
## Spring事务管理
11065

111-
**Spring单例与线程安全:**
66+
- [可能是最漂亮的Spring事务管理详解](https://juejin.im/post/5b00c52ef265da0b95276091)
67+
- [Spring编程式和声明式事务实例讲解](https://juejin.im/post/5b010f27518825426539ba38)
11268

113-
[Spring框架中的单例模式(源码解读)](http://www.cnblogs.com/chengxuyuanzhilu/p/6404991.html)
69+
### Spring单例与线程安全
11470

115-
单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中一个类只有一个实例。spring依赖注入时,使用了 多重判断加锁 的单例模式。
71+
- [Spring框架中的单例模式(源码解读)](http://www.cnblogs.com/chengxuyuanzhilu/p/6404991.html):单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中一个类只有一个实例。spring依赖注入时,使用了 多重判断加锁 的单例模式。
11672

117-
> ## Spring源码阅读
73+
### Spring源码阅读
11874

11975
阅读源码不仅可以加深我们对Spring设计思想的理解,提高自己的编码水品,还可以让自己在面试中如鱼得水。下面的是Github上的一个开源的Spring源码阅读,大家有时间可以看一下,当然你如果有时间也可以自己慢慢研究源码。
12076

121-
### [Spring源码阅读](https://github.com/seaswalker/Spring)
12277
- [spring-core](https://github.com/seaswalker/Spring/blob/master/note/Spring.md)
12378
- [spring-aop](https://github.com/seaswalker/Spring/blob/master/note/spring-aop.md)
12479
- [spring-context](https://github.com/seaswalker/Spring/blob/master/note/spring-context.md)

0 commit comments

Comments
 (0)