Spring面试题及答案(31-35)

31、Spring框架的核心模块有哪些?它们各自的作用是什么?

Spring框架的核心模块包括:
Spring Core:提供IoC容器和依赖注入功能的基础设施。
Spring AOP:提供面向切面编程的支持。
Spring ORM:提供对ORM框架的支持,如Hibernate、JPA等。
Spring JDBC:提供对JDBC的支持。
Spring Web:提供Web应用开发相关的功能,如MVC、WebSocket、Restful API等。
Spring Test:提供单元测试和集成测试相关的支持。

32、Spring的Bean是什么?有哪些作用域?

Spring的Bean是Spring IoC容器中管理的对象,可以理解为应用程序中的组件。Bean可以由Spring容器创建、配置和管理,通常可以通过依赖注入的方式使用。Spring中的Bean有多种作用域,包括:
singleton:单例模式,一个Bean实例在整个应用程序中共享。
prototype:原型模式,每次请求Bean时都会创建一个新的实例。
request:Bean的作用域限定在HTTP请求的生命周期内。
session:Bean的作用域限定在HTTP会话的生命周期内。
global session:Bean的作用域限定在全局HTTP会话的生命周期内(仅适用于基于portlet的Web应用程序)。

33、Spring的IoC和DI是什么?它们有什么区别?

IoC(Inversion of Control)是一种编程思想,它将对象的创建、依赖关系的维护和对象之间的通信等操作交给容器负责,从而实现松耦合、可重用、可测试的组件化开发。DI(Dependency Injection)是IoC的一种具体实现方式,它通过构造函数注入、Setter方法注入或接口注入的方式将Bean所依赖的其他Bean注入到它里面,从而实现依赖关系的解耦。

34、Spring中Bean的生命周期是什么?

Spring中Bean的生命周期包括以下阶段:
实例化:Spring根据Bean的定义创建Bean的实例。
属性赋值:Spring将配置文件中的属性值或注解中的属性值注入到Bean实例中。
初始化:通过实现InitializingBean接口或在配置文件中配置init-method来实现初始化方法,Spring会在Bean实例创建完成之后调用该方法。
使用:Bean实例可以被应用程序使用。
销毁:通过实现DisposableBean接口或在配置文件中配置destroy-method来实现销毁方法,Spring会在应用程序关闭或者通过ApplicationContext的close方法关闭容器时调用该方法。

35、Spring的AOP是什么?它有什么作用?

AOP(面向切面编程)是Spring框架的一个核心功能,它允许以声明的方式将代码逻辑跨越多个方法、对象和代码位置进行组织和重用,以便实现横切关注点的复用。具体来说,AOP可以通过将通用横切逻辑(如安全性、事务、缓存等)从业务逻辑中抽离出来,以提高代码的可重用性和可维护性。在Spring中,AOP是通过代理模式实现的,可以通过XML配置或注解来声明AOP通知和切入点。