1:什么是 Spring
Spring 是一个轻量级 Java 开发框架,最早有 Rod Johnson 创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发 Java 应用程序提供全面的基础架构支持。Spring 负责基础架构,因此 Java 开发者可以专注于应用程序的开发。
Spring 最根本的使命是解决企业级应用开发的复杂性,即简化 Java 开发。
Spring 可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)。
为了降低 Java 开发的复杂性,Spring 采取了以下 4 种关键策略
①基于 POJO 的轻量级和最小侵入性编程。
②通过依赖注入和面向接口实现松耦合。
③基于切面和惯例进行声明式编程。
④通过切面和模板减少样板式代码。
2:Spring 的俩大核心概念
IOC(控制翻转)
控制翻转,也叫依赖注入,他就是不会直接创建对象,只是把对象声明出来,在代码 中不直接与对象和服务进行连接,但是在配置文件中描述了哪一项组件需要哪一项服 务,容器将他们组件起来。
在一般的 IOC 场景中容器创建了所有的对象,并设置了必 要的属性将他们联系在一起,等到需要使用的时候才把他们声明出来,使用注解就跟 方便了,容器会自动根据注解把对象组合起来
AOP(面对切面编程)
面对切面编程,这是一种编程模式,他允许程序员通过自定义的横切点进行模块 化,将那些影响多个类的行为封装到课重用的模块中。 例子:比如日志输出,不使用 AOP 的话就需要把日志的输出语句放在所有类中,方法 中,但是有了 AOP 就可以把日志输出语句封装一个可重用模块,在以声明的方式将他 们放在类中,每次使用类就自动完成了日志输出。
3:Spring 框架的设计目标,设计理念,和核心是什么
Spring 设计目标:Spring 为开发者提供一个一站式轻量级应用开发平台;
Spring 设计理念:在 JavaEE 开发中,支持 POJO 和 JavaBean 开发方式,使应用面向接口开发,充分支持 OOP(面向对象)设计方法;Spring 通过 IOC 容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给 IOC 容器,实现解耦;
Spring 框架的核心:IOC 容器和 AOP 模块。通过 IOC 容器管理 POJO 对象以及他们之间的耦合关系;通过 AOP 以动态非侵入的方式增强服务。
IOC 让相互协作的组件保持松散的耦合,而 AOP 编程允许你把遍布于应用
各层的功能分离出来形成可重用的功能组件。
4:Spring 的优缺点是什么
优点
①方便解耦,简化开发
Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给 Spring 管理。
②AOP 编程的支持
Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行
监控等功能。
③声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
④方便程序的测试
Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序。
④方便集成各种优秀框架
Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直
接支持(如:Struts、Hibernate、MyBatis 等)。
⑤降低 JavaEE API 的使用难度
Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装,使这些 API 应用难度大大降低。
缺点
①Spring 明明一个很轻量级的框架,却给人感觉大而全
②Spring 依赖反射,反射影响性能
③使用门槛升高,入门 Spring 需要较长时间