Java面试中,面试官必问的知识点,那就是Spring了,猿人熬了几个夜整理的spring家族的知识点,包括Spring、SpringMVC、SpringBoot、SpringCloud,对Spring、SpringMVC的相关概念和原理进行了讲解,同时给大家准备了SpringBoot、SpringCloud实战学习资源,含源码和文档。
点这里SpringBoot/SpringCloud学习源码和文档 获取学习资料,猿人熬了无数个夜才整理出来的,加油,要学习的朋友们!
1.你对Spring框架的理解,Spring框架有哪些模块?
Spring是一个轻量级的IoC和AOP容器框架,是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。
- Spring,一种用来简化企业应用级开发的一种开源框架。
- 简化开发:它对常用的API做了封装,比如对JDBC的封装,使用Spring JDBC访问数据库,就不需要考虑如何获取连接和关闭的问题。
- 解耦:Spring帮我们管理软件之间的依赖关系,这样对象之间的耦合性就降低了,这样的维护性就得到了提高。
- 集成其它框架:方便扩展和优化其功能,例如和Mybatis的集成等。
- Spring框架是按照设计模式精心打造的,这使得我们在开发环境中,能方便的使用框架,不用考虑后台是怎么进行的。
- Spring容器是Spring框架中一个核心的模块,用来管理对象的创建,销毁和初始化等操作,以及对象之间的依赖关系等。
主要包括以下七个模块:
- Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
- Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;
- Spring AOP:AOP服务;
- Spring Web:提供了基本的面向Web的综合特性,提供对常见框架如Struts2的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器;
- Spring MVC:提供面向Web应用的Model-View-Controller,即MVC实现;
- Spring DAO:对JDBC的抽象封装,简化了数据访问异常的处理,并能统一管理JDBC事务;
- Spring ORM:对现有的ORM框架的支持。
2.Spring的优点?
- 简化开发,解耦,集成其它框架。
- 低侵入式设计。
- Spring的DI机制降低了业务对象替换的复杂性,提高了软件之间的解耦。
- Spring AOP支持将一些通用的任务进行集中式的管理,例如:安全,事务,日志等,从而使代码能更好的复用。
3.什么是控制反转(IOC),什么是依赖注入(DI)?
- IOC:就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。BeanFactory接口是Spring Ioc容器的核心接口。
- DI:我们在使用Spring容器的时候,容器通过调用set方法或者是构造器来建立对象之间的依赖关系。
- 控制反转是目标,依赖注入是我们实现控制反转的一种手段。
4.Java中实现依赖注入的三种方式?
- 构造器注入
- set方法注入
- 接口注入
5.Spring容器中如何创建对象?
- 无参构造器创建对象
- 有参构造器创建对象
- 工厂类创建对象
福利
猿人整理的spring家族的知识点,包括Spring、SpringMVC、SpringBoot、SpringCloud,对Spring、SpringMVC的相关概念和原理进行了讲解,同时给大家准备了SpringBoot、SpringCloud实战学习资源,含源码和文档。
SpringBoot
- 第001课:Spring Boot 课程概览【springboot-abstract工程】
- 第002课:Spring Boot 开发环境搭建【springboot-hello工程】
- 第003课:Spring Boot 快速体验 Web 开发【springboot-web工程】
- 第004课:Spring Boot 项目属性配置【springboot-config工程】
- 第005课:Spring Boot 中MVC支持【springboot-mvc工程】
- 第006课:Spring Boot 集成 MyBatis【springboot-mybatis工程】
- 第007课:Spring Boot MyBatis Druid 多数据源配置【springboot-druid工程】
- 第008课:Spring Boot 返回JSON数据格式封装【springboot-json工程】
- 第009课:Spring Boot 使用slf4j日志记录【springboot-log工程】
- 第010课:Spring Boot 集成Swagger接口文档【springboot-swagger工程】
- 第011课:Spring Boot 集成Thymeleaf模板引擎【springboot-thymeleaf工程】
- 第012课:Spring Boot 全局异常处理【springboot-exception工程】
- 第013课:Spring Boot 切面AOP处理【springboot-aop工程】
- 第014课:Spring Boot 事务管理【springboot-transactional工程】
- 第015课:Spring Boot 监听器【springboot-listener工程】
- 第016课:Spring Boot 拦截器【springboot-interceptor工程】
- 第017课:Spring Boot 集成Redis【springboot-redis工程】
- 第018课:Spring Boot 集成 Quartz【springboot-quartz工程】
- 第019课:Spring Boot 集成Shiro【springboot-shiro工程】
- 第020课:Spring Boot 发送邮件【springboot-mail工程】
- 第021课:Spring Boot MongoDB 实战【springboot-mongodb工程】
- 第022课:Spring Boot 项目打包与部署【springboot-jar工程】
- 第023课:Spring Boot 搭建实际项目开发框架【springboot-framework工程】
- 第024课:Spring Boot 综合实战用户管理系统【springboot-user工程】
SpringCloud
- SpringCloud 实战教程 | 001篇: 服务注册与发现Eureka
- SpringCloud 实战教程 | 002篇: 服务消费者Rest+Ribbon方式
- SpringCloud 实战教程 | 003篇: 服务消费者Feign方式
- SpringCloud 实战教程 | 004篇: 断路器Hystrix
- SpringCloud 实战教程 | 005篇: 路由网关Zuul
- SpringCloud 实战教程 | 006篇: 分布式配置中心SpringCloud Config
- S