1. 为啥要用 Spring
张三是一个编程小白,他每次在 service 层写代码都要自己 new 一堆 Dao 接口的实现类。
public class ProjectServiceImpl implements ProjectService {
UserDao userDao = new UserDaoImpl();
ProjectSectionDao projectSessionDao = new ProjectSessionDaoImpl();
ProjectDao projectDao = new ProjectDaoImpl();
SupplyDao supplyDao = new SupplyDaoImpl();
.......
}
有一天正 new 着对象,张三心想:"我这一个 service 都需要 new 好多 Dao ,那如果有一堆 service ,那我不得花费好长时间?"
"有没有一个工具类或者什么框架能帮我管理这些对象?我只需要配置一下,需要的时候它就能自动帮我 new 个对象出来?"
张三陷入了深深的沉思之中。
张三的室友李四也是一个编程小白。
李四呢想给自己的小项目增加一个功能:记录方法执行的时间。结果他脑子一热竟然给所有的方法都增加了一堆打印方法:
System.out.println("项目开始执行");
// 开始时间
long start = System.currentTimeMillis();
// 业务代码
// 结束时间
long end = System.currentTimeMillis();
// 计算执行时间
System.out.printf("执行时间:%d 毫秒.", (end - start));
过了半个小时,李四终于给项目中所有的方法都复制粘贴上了打印语句。他长舒一口气:"我真是个大聪明!"
张三看了一眼李四的代码,连连鼓掌:"妙啊!咱们宿舍的技术大神!"
旁边的王五实在忍不住了,对张三说:"妙个屁!最近的 Spring 框架课你俩是不是都没去?光顾着打游戏了?我都替你俩答了三次到了!"
李四问王五:"这个Spring 框架学了有用吗?"
王五:"不仅能解决张三说的管理对象的问题,还能帮你解决记录日志的问题。配置完 Spring ,你只需要定义一个切面类,根本不需要在一堆类上面复制粘贴一堆代码。"
张三摸摸后脑勺笑着说:"原来 Spring 框架那么好用,我以后再也不逃课了。我这就去翻课本学习 Spring 框架去。"
2. Spring 简介
Spring 是一个轻量级的 Java 开发框架。Spring 的核心是控制反转(IOC)和面向切面编程(AOP)。
Spring 主要有如下优点:
1.解耦
2.支持面向切面编程
3.便于集成其他框架
很多朋友想学习spring,但不知道要从哪里学起,小编今天就分享一份spring全家桶学习资料。毫不夸张的说这是迄今最全的Spring相关全家桶,脑图+面试+进阶学习,全文篇幅有点长,但干货满满,请仔细阅读!且全文提及的全部手绘脑图的原件、面试解析的原件、进阶学习的笔记PDF原件等全部都可免费分享,可以直接看文末哦。
全篇分为以下三个部分:

第一篇:脑图篇
1.1 手绘 Spring 架构脑图

1.2 手绘 Spring5 架构脑图

1.3 手绘 Spring Security 架构脑图

1.4 手绘 Spring Boot 架构脑图

1.5 手绘Spring Cloud 架构脑图

1.6 手绘Spring MVC 架构脑图

第二篇:面试篇
2.1 Spring 灵魂100问
基本概念面试题集( Spring相关概念梳理)
- 1.谈谈对Spring loC的理解?
- ⒉谈谈对Spring Dl的理解?
- 3.BeanFactory 接口和ApplicationContext 接口不同点是什么?
- 4.请介绍你熟悉的Spring核心类,并说明有什么作用?
- 5.介绍一下 Spring 的事务的了解?
- 6.介绍一下Spring 的事务实现方式?
- 7.解释AOP模块
- 8.Spring 的通知类型有哪些,请简单介绍一下?
- 9.Spring通知类型使用场景分别有哪些?
- 10.请介绍一下你对Spring Beans的理解?
- 11.Spring 有哪些优点?
- 12.在Spring中使用hibernate的方法步骤
- 13.Spring和Struts 的区别?
- 14.Spring 框架由哪几部分组成?
- 15.谈谈你对 BeanFactory的理解,BeanFactory 实现举例
- 16.谈谈对Spring 中的Web模块的理解
- 17.BeanFactory和Application contexts有什么区别?
- 18.谈谈你对Spring依赖注入的理解?
- 19.什么是 Bean装配?
- 20.什么是 Bean的自动装配?
- 21.介绍一下自动装配有几种方式?
- 22.什么是基于注解的容器配置?
- 23.简述JdbcTemplate类的作用
- 24.解释AOP
- 25.解释Aspect 切面
- 26.简述Spring AOP中的通知
- 27.Spring AOP中的织入你怎样理解?
- 28.请详细介绍一下Spring MVC 的流程?
- 29.Spring 配置文件?
- 30.@RequestMapping 注解用在类上面有什么作用
- 31.怎么样把某个请求映射到特定的方法上面
- 32.谈谈Spring 对 DAO的支持
应用场景面试题集(各知识点不同使用场景选型)
- 33.Spring配置 Bean '实例化有哪些方式?
- 34.Bean注入属性有哪几种方式
- 35.在Spring 中如何实现时间处理?
- 36.Spring 中如何更高效的使用JDBC ?
- 37.请介绍一下设计模式在Spring框架中的使用?
- 38.讲讲Spring 框架的优点有哪些?
- 39.哪种依赖注入方式你建议使用,构造器注入,还是Setter方法注入?
- 40.你怎样定义类的作用域?
- 41.解释Spring支持的几种 Bean的作用域
- 42.在 Spring 中如何注入一个Java集合?
- 43.你可以在Spring 中注入一个null和一个空字符串吗?
- 44.什么是基于Java的 Spring注解配置?给一些注解的例子
- 45.你更倾向用哪种事务管理类型?
- 46.Bean的调用方式有哪些?
- 47.Spring MVC里面拦截器是怎么写的
- 48.当一个方法向AJAX返回特殊对象,比如Object、List 等,需要做什么处理?
- 49.如何使用Spring MVC完成JSON操作
- 50.Spring 如何整合Hibernate
- 51.Spring 如何整合Struts2 ?
- 52.开发中主要使用Spring的什么技术?
- 53.介绍一下 Spring MVC常用的一些注解
- 54.Spring框架的事务管理有哪些优点
深度度知识面试题集(底层实现原理详解)
- 55.loC控制反转设计原理?
- 56.Spring 的生命周期?
- 57.Spring 如何处理线程并发问题?
- 58.核心容器((应用上下文)模块的理解?
- 59.为什么说Spring是一个容器?
- 60.Spring的优点?
- 61.Spring框架中的单例Beans 是线程安全的么?
- 62.Spring 框架中有哪些不同类型的事件?
- 63.loC的优点是什么?
- 64.解释Spring 框架中 Bean 的生命周期
- 65.什么是Spring的内部 Bean?
- 66.自动装配有哪些局限性?
- 67.Spring框架的事务管理有哪些优点?
- 68.在Spring AOP中,关注点和横切关注的区别是什么?
- 69.说说Spring AOP的底层实现原理?
- 70.如何给Spring容器提供配置元数据?
- 71.哪些是重要的 Bean生命周期方法?你能重载它们吗?
- 72.讲下 Spring MVC的执行流程
- 73.Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?
- 74.Spring中循环注入的方式?
- 75.Spring MVC比较 Struts2
拓展内容面试题集(Spring Boot相关题集)
- 76.什么是 Spring Boot?
- 77.Spring Boot自动配置的原理?
- 78.Spring Boot 读取配置文件的方式?79.什么是微服务架构?
- 80.Ribbon和Feign 的区别? 81.Spring Cloud 断路器的作用?
- 82.为什么要用Spring Boot?
- 83.Spring Boot的核心配置文件有哪几个?它们的区别是什么?
- 84.Spring Boot的配置文件有哪几种格式?它们有什么区别?
- 85.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
- 86.开启Spring Boot 特性有哪几种方式?
- 87.Spring Boot需要独立的容器运行吗?
- 88.运行Spring Boot有哪几种方式?
- 89.你如何理解Spring Boot中的 Starters?
- 90.如何在 Spring Boot启动的时候运行一些特定的代码?
- 91.Spring Boot 有哪几种读取配置的方式?
- 92.Spring Boot实现热部署有哪几种方式?
- 93.Spring Boot多套不同环境如何配置?
- 94.Spring Boot可以兼容老Spring项目吗,如何做?
- 95.什么是 Spring Cloud?
- 96.介绍一下Spring Cloud常用的组件?
- 97.Spring Cloud如何实现服务注册的?
- 98.什么是负载均衡?有什么作用?
- 99.什么是服务熔断?
- 100.请介绍一下 Ribbon 的主要作用?

2.2 Spring Boot高频25问
- 问题一 Spring Boot、Spring MVC和Spring 有什么区别?
- 问题二 什么是自动配置?
- 问题三 什么是Spring Boot Stater ?
- 问题四 你能否举一个例子来解释更多Staters的内容?
- 问题五 Spring Boot还提供了其它的哪些Starter Project Options?
- 问题六 Spring 是如何快速创建产品就绪应用程序的?
- 问题七 创建一个 Spring Boot Project 的最简单的方法是什么?
- 问题八 Spring Initializr是创建Spring Boot Projects的唯一方法吗?
- 问题九 为什么我们需要spring-boot-maven-plugin?
- 问题十 如何使用SpringBoot自动重装我的应用程序?
- 问题十一 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
- 问题十二 如何在 Spring Boot 中添加通用的JS代码?
- 问题十三 什么是 Spring Data?
- 问题十四 什么是Spring Data REST?
- 问题十五 path="users", collectionResourceRel="users”如何与 Spring Data Rest 一起使用?
- 问题十六当 Spring Boot应用程序作为Java应用程序运行时,后台会发生什么?
- 问题十七 我们能否在 spring-boot-starter-web中用jetty 代替tomcat?
- 问题十八 如何使用Spring Boot生成一个WAR文件?
- 问题十九 如何使用Spring Boot部署到不同的服务器?
- 问题二十 RequestMapping和GetMapping 的不同之处在哪里?
- 问题二十一 为什么我们不建议在实际的应用程序中使用Spring Data Rest?
- 问题二十二 在 Spring Initializer 中,如何改变一个项目的包名字?
- 问题二十三 可以配置application.propertierde的完整的属性列表在哪里可以找
- 问题二十四 JPA和Hibernate有哪些区别?
- 问题二十五 业务边界应该从哪一层开始?
- 问题二十六 使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需要哪些依赖项?
- 问题二十七 如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?
- 问题二十八 指定的数据库连接信息在哪里?它是如何知道自动连接至 H2 的?
- 问题二十九 我们如何连接一个像 MySQL 或者 Orcale 一样的外部数据库?
- 问题三十 Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
- 问题三十一 如果 H2 不在类路径里面,会出现上面情况?
- 问题三十二 你能否举一个以 ReadOnly 为事务管理的例子?
- 问题三十四 配置文件的需求是什么?
- 问题三十五 如何使用配置文件通过 Spring Boot 配置特定环境的配置?

**2.3 **Spring Cloud 8问
- 问题一 什么是 Spring Cloud?
- 问题二 使用 Spring Cloud 有什么优势?
- 问题三 服务注册和发现是什么意思?
- 问题四 Spring Cloud 如何实现?
- 问题五 负载平衡的意义什么?
- 问题六 什么是 Hystrix?它如何实现容错?
- 问题七 什么是 Hystrix 断路器?我们需要它吗?
- 问题八 什么是 Spring Cloud Bus?我们需要它吗?
- 问题九 什么是 Netflix Feign?它的优点是什么?

**2.4 **Spring MVC 22问
第三篇:进阶学习篇
3.1 Spring 进阶学习
(1)Spring高级源码解析

3.2 Spring5 进阶学习
(1)Spring5 学习手册

3.3 Spring Security 进阶学习
(1)SpringSecurity_01 认证功能实现

(2)SpringSecurity_02

(3)SpringSecurity_03 整合SpringBoot

(4)SpringSecurity_04 OAuth2.0

(5)Spring Security OAuth2.0认证授权_v1.1

3.4 Spring Boot 进阶学习
(1)Spring Boot 教程

(2)Spring Boot 核心宝典

3.5 Spring Cloud 进阶学习
(1)SpringCloud微服务架构笔记(一)

(2)SpringCloud微服务架构笔记(二)

(3)SpringCloud微服务架构笔记(三)

(4)SpringCloud微服务架构笔记(四)

3.6 Spring MVC 进阶学习
(1)精通Spring MVC 4

(2)看透Spring MVC源代码分析与实践

总结
所有的Spring、SpringCloud、SpringBoot、SpringMVC、Spring5、SpringSecurity等架构脑图都是纯手绘的,文章里无法上传原件xmind,所以全部是都是图片展示。且在面试篇,也列举出了所有相关的面试问题,完整的解析也已整理成相应的pdf。最后的进阶学习篇,相关笔记等由于篇幅原因不做过多的展示,全部大致截图展现,但也照样已经整理成成套的学习pdf,皆可免费下载分享——100%免费分享请 *转发+转发+私信我口令 *****【全家桶】!