1. Spring 应用框架
1.1. 谈谈你对Spring框架的理解?
1) 开源而轻量级的框架,提供事务支持、管理依赖的对象——整合资源、统一服务(整合JDBC,MyBatis,Hibernate等框架资源以更好的简化应用软件开发,降低软件开发周期)
2) spring的核心就是控制反转(IOC)和面向切面编程(AOP)
3) 注入方式:构造器注入、 setter注入、注解注入
4) Spring 从2.0到5.0版本在经历着不断的变化,已经由最初的IOC,AOP等发展到了现在的微服务Spring Cloud、Spring boot ,(IOC-面向对象,AOP-面向切面,Cloud-面向微服务)
1.2. 谈谈你对Spring框架中有哪些核心组件?
1) IOC 组件(控制反转容器):对象创建,对象存储,对象依赖管理。
2) DATA 组件(整合JDBC,MyBatis,JPA,....)
3) MVC 组件(重点解决与表示层通讯问题)
4) AOP 组件(重点解决对象功能扩展问题)
5) ....

2. Spring 控制反转(对IOC的理解)
简介:控制反转容器IOC:对象创建,对象存储,对象依赖管理
2.1. 谈谈你对Spring IOC 的实现思想的理解
1) 容器如何知道要创建哪些对象(通过xml或注解方式告诉容器)
2) 容器如何构建这些类的对象(通过反射技术,Class.forName(""))
3) 容器如何存储这些对象?(通过Map容器进行存储)
2.2.Spring IOC项目构建基本步骤:
1. 创建maven项目
2. 添加spring 依赖(spring-context)及配置文件(spring-configs.xml)
3. 编写并配置java类
4. 编写单元测试初始化容器,获取java对象.
运行结构图:

3、Spring Bean对象
3.1 谈谈你对Spring Bean 对象的构建方式的理解
Spring管理的所有对象都称之为Bean.有两种配置方法:
1) 基于xml进行配置
2) 一种基于注解进行配置.
3.2 Bean 对象的构建
Spring 中Bean对象的构建,提供了如下几种方式:
1) 直接通过构造方法
2) 通过类的静态工厂方法(例如Calendar的getInstance方法)
3) 通过实例的实例方法构建对象(例如通过Calendar对象的getTime方法获取date对象).
4) 通过工厂的实例方法(调用FactoryBean的getObject方法)
3.3 谈谈你对Spring Bean 对象的作用域理解?
1) singleton :系统默认、单例模式(只存在一个bean实例)
2) Prototype:每次调用bean都会创建新的对象)
3) Session:
4) Global-session:
5) Request: 每次http请求创建bean
3.4 谈谈你对Spring Bean 对象的生命周期及生命周期方法?
生命周期是指Bean对象的创建,初始化,服务,销毁的这个过程.一般都是打开调用时创建,关闭时销毁。
3.5 谈谈你对Spring Bean 对象中延迟加载思想的理解
spring框架应用,容器初始化时候,默认会构建所有由spring管理的Bean对象.这些对象长时间不使用还占用着内存就会造成一定的资源浪费.为了解决这个问题,spring中提供了一种延迟加载机制.通过这种机制来提高系统资源的有效使用.







