Spring基本概念
1.Spring框架主要包含哪些模块?
Spring框架就是模块的集合,方便开发,主要的模块有Spring Core
、Spring AOP
、Spring MVC
和Spring Dao
。Spring Core是Spring 的核心模块,主要提供IOC容器。Spring AOP主要实现面向切面编程,Spring MVC用于快速构建MVC框架,Spring Dao用于访问数据库对象。
2.Spring、Spring MVC、Spring Boot之间什么关系?
- Spring通常指的就是
Spring Frammwork
,就是由框架来管理对象的创建和销毁,Spring管理的对象就是Bean
。Spring最核心的特性就是DI
和IOC
,DI和IOC可以帮助我们开发出高内聚、低耦合的应用程序。 - Spring MVC是在Spring基础上发展出来的,基于MVC模式的Web开发框架,实现了Model、View和Controller之间的职责解耦。
- Spring Boot为我们提供了一个能够快速使用Spring 的优秀解决方案,通过最小化的配置,我们就可以使用Spring 。
3.什么是IOC控制反转?
控制反转是一种设计思想,就是将我们手动创建对象的控制权交给Spring框架来管理,由Spring负责对象生命周期和对象间的依赖关系。Spring IoC
容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
4.Spring中的DI依赖注入是什么?
依赖注入是IOC的一种实现方式,通过将依赖对象注入到目标对象来实现解耦。通过依赖注入,我们只需要简单的配置就能获取所需要的资源,完成自身的业务逻辑。不需要关心具体的资源来自何处,由谁实现。
依赖注入主要依靠三个注解,分别是@Component
、@Autowired
和@Resource
。
- @Component:被这个注解标注的类需要纳入到IOC容器中,称为Bean。
- @Autowired:根据类型匹配对应的Bean对象,并将其纳入到所需要的类中。
- @Resource:根据名称匹配对应的Bean对象。
依赖注入的三种方式:
- 属性注入,在属性上添加注解。优点是注入方式简单,缺点是注入对象不能用
final
修饰。启动时不报错,使用Bean时可能报错,有可能出现循环依赖。 Setter
注入,在set
方法上添加注解。优点是注入对象是可选的,缺点就是注入对象不能用final修饰.- 构造方法注入,在构造方法上添加注解。优点是注入对象可以使用final修饰,如果存在循环依赖,在项目启动时就报错。缺点是注入对象很多时,构造函数的代码比较臃肿。