Spring框架-面试题核心概念

2023-10-17 10:39:36 浏览数 (1)

1.Spring框架的作用是什么?

要点:

Spring是一个开源框架,主要为了简化企业级应用的开发。它是一个IOC和AOP的容器框架。核心功能如下:

(1)DI依赖注入容器,实现面向接口、模块化开发。

(2)AOP面向切面容器,实现程序的动态统一增强。

(3)为不同的ORM技术提供Session管理和声明式事务管理,简化数据层开发。

(4)提供优秀的SpringMVC框架,简化界面层开发,也可以轻松整合其他MVC框架。

(5)提供Spring Boot快速配置,Spring Cloud微服务架构。简化各种企业级技术的实现:如NoSQL、大数据、分布式技术等等。

2. 什么是DI?

要点:

DI(Dependency Injection)是指依赖注入或者叫控制反转(IOC),指程序中对象所依赖的子对象不用在硬编码中创建,而是通过容器(如Spring)在运行时再注入进来。

    DI使得模块间只依赖于接口,而不是实现类(实现类在运行时由容器注入),使得软件模块可以独立开发与测试,降低耦合度。

3.什么是AOP?

要点:

AOP(Aspect Oriented Programming)面向切面编程。可以在不修改原有代码的基础上为方法注入增强代码的一种方式。AOP是通过代理模式或者动态代理的方式,把外部代码织入到原有程序中的。AOP典型的应用场景就是事务,日志,权限,异常处理等。

AOP利用“横切"的技术,剖开封装的对象内部,并将影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,有利于未来的可操作性和可维护性。

4.Spring常用注解

要点:

(1)组件相关:

@Component 组件,例如工具类

@Service 在业务逻辑层使用

@Repository 在数据访问层使用

@Controller  控制器的声明

(2)依赖注入:

@Autowired:由Spring提供,按类型实现依赖注入

@Resource:由JSR-250提供

(3)配置注解:

@Configuration 声明当前类为配置类

@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代<bean/>

@ComponentScan 设置包的扫描范围

(4)AOP注解:

@Aspect 声明一个切面(类上)

@After 后置通知

@Before 前置通知

@Around 环绕通知

@PointCut 声明切点

@Scope 设置Bean的作用范围

5.Spring中的设计模式

要点:

    代理模式:在AOP使用动态代理实现切面编程

    单例模式:在spring配置文件中定义的bean默认为单例模式。

    模板方法模式:用来解决代码重复的问题。

    前端控制器模式:Spring提供了DispatcherServlet来对请求进行分发。

    依赖注入模式:贯穿于BeanFactory / ApplicationContext接口的核心理念。

    工厂模式:BeanFactory用来创建对象的实例。

6.Spring支持的几种bean的作用域

要点:

     singleton:单例,默认作用域,SpringIOC容器中只存在一个实例

     prototype:每次通过Spring容器获取prototype定义的bean时,都将创建一个新的Bean实例,每个Bean实例都有自己的属性和状态,

     request:在一次Http请求中,容器会返回该Bean的同一实例。而对不同的Http请求则会产生新的Bean,而且该bean仅在当前Http Request内有效。

     session:在一次Http Session中,容器会返回该Bean的同一实例。而对不同的Session请求则会创建新的实例,该bean实例仅在当前Session内有效。

      global Session:在一个全局的Http Session中,容器会返回该Bean的同一个实例,仅在使用 portlet context时有效。

7.Spring中Bean的生命周期?

要点:

Bean的生命周期经历了一系列方法,比较关键的过程有以下几点:

(1)实例化一个Bean,就是通常说的new;

(2)初始化:按照Spring上下文对实例化的Bean进行配置,也就是IOC注入。如果这个Bean的Spring配置中配置了init-method属性,会自动调用其配置的初始化方法

(3)Bean的调用:获取bean并进行调用;

(4)Bean销毁:当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法。如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

8.Spring中的事务管理

要点:

作为企业级应用程序框架,Spring在不同的事务管理API之上定义了一个抽象层。而应用程序开发人员不必了解底层的事务管理API,就可以使用Spring的事务管理机制。Spring既支持编程式事务管理(也称编码式事务),也支持声明式的事务管理。

编程式事务管理:将事务管理代码嵌入到业务方法中来控制事务的提交和回滚,在编程式事务中,必须在每个业务操作中包含额外的事务管理代码。

    声明式事务管理:大多数情况下比编程式事务管理更好用。它将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。事务管理作为一种横切关注点,可以通过AOP方法模块化。Spring通过Spring AOP框架支持声明式事务管理。

9.Spring中的依赖注入方式有几种

要点:

(1)set属性注入

(2)构造器注入

(3)静态工厂方法注入

(4)实例工厂方法注入

10.Spring的配置方式有哪些

要点:

   Spring支持xml配置,注解配置以及JavaConfig配置三种形式。

(1)基于 xml 配置

代码语言:javascript复制
<bean id=”dao” class=”com.demo.dao.impl.UserDaoImpl”></bean>

(2)基于注解配置

可以通过在相关的类,方法或字段声明上使用注解,将 bean 配置为组件类本身,而不是使用 XML 来描述 bean 装配。默认情况下,Spring 容器中未打开注解装配

代码语言:javascript复制
<beans>
    <context:annotation-config/>
</beans>

(3) 基于 Java API 配置

Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。

@Bean 注解扮演与 <bean /> 元素相同的角色。

@Configuration 标记配置类,替代了xml配置中的配置文件

0 人点赞