Java面试八股文---------Spring

1.什么是 Spring 框架?它的核心功能是什么?

Spring 是一个开源的轻量级 Java 应用开发框架,它提供了一种综合性的编程和配置模型,支持构建任何类型的 Java 应用程序,包括 Web 应用程序、移动应用程序、消息驱动的应用程序等。

Spring 框架的核心功能包括依赖注入(DI)面向切面编程(AOP)声明式事务处理等。

2.Spring 的依赖注入(DI)是什么?它有什么好处?

依赖注入是指在对象初始化时,由容器自动将其所依赖的其他对象引用注入到该对象中。

这样可以降低对象之间的耦合度,使得对象更加灵活可配置,同时也方便进行单元测试和代码重用

3.请介绍一下 Spring 中的 Bean。

Bean 是指被 Spring 容器管理的对象。Bean 通过 IoC 容器的配置信息创建、组装和管理,并且可以在整个应用程序中被重用。

4.Spring 中的 Bean 生命周期是怎样的?

Spring 中的 Bean 生命周期可以分为以下阶段:

1)实例化:在 Spring 容器中创建 Bean 的实例。

2)属性赋值:将配置文件或注解中指定的属性值赋值给 Bean 实例。

3)初始化:在 Bean 实例创建后,可以自定义一个初始化方法供 Spring 容器调用。

4)销毁:当容器关闭时,会调用 Bean 对象的销毁方法来释放资源。

5.Spring 支持哪些不同的 Bean 作用域?

Spring 支持以下五种 Bean 作用域:

1)Singleton(单例):在整个应用程序中只存在一个共享的 Bean 实例;

2)Prototype(原型):每次请求时都会创建一个新的 Bean 实例;

3)Request:对于每次 HTTP 请求都会创建一个新的 Bean 实例;

4)Session:对于每个用户会话都会创建一个新的 Bean 实例;

5)Global Session:用于 Portlet 环境下,对于每个用户全局会话都会创建一个新的 Bean 实例。

6.Spring AOP 是什么?它是如何实现的?

AOP(Aspect-Oriented Programming,面向切面编程) 是一种编程范式,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码降低模块间的耦合度,并有利于未来的可扩展性和可维护性。

在 Spring 中,AOP 可以通过基于代理的方式实现。Spring 使用 JDK 动态代理或 CGLIB 代理技术,在运行时动态地生成代理对象,从而实现对目标对象的增强。

7.请解释一下 Spring 中的声明式事务管理是如何工作的。

在 Spring 中,声明式事务管理是通过 AOP 来实现的。

开发人员可以使用 @Transactional 注解或 XML 配置来声明一个事务,当该方法被调用时,Spring 会自动启动事务并处理事务的提交和回滚。

开发人员无需编写任何与事务有关的代码,从而简化了事务管理的操作。

8.Spring MVC 是什么?它的工作原理是怎样的?

Spring MVC 是一种基于模型-视图-控制器(MVC)设计模式的 Web 应用程序框架,它提供了一种可扩展、灵活和高效的方式来构建 Web 应用程序。

Spring MVC 的工作原理主要是通过前端控制器 DispatcherServlet 来实现的,它负责初始化 Spring 容器并分发请求至对应的 Controller,然后将结果返回给客户端。

9.Spring Boot 和 Spring 框架有什么区别?

Spring Boot 是基于 Spring 框架之上的一个快速开发框架,它是 Spring 社区推出的一个全新、基于习惯的约定优于配置的框架,旨在简化 Spring 应用程序的搭建和开发。相比于传统的 Spring 框架,Spring Boot 不需要开发人员进行复杂的配置和集成操作,只需要引入相关依赖即可快速构建出一个完整的应用程序。

10.Spring Security 是什么?它的作用是什么?

Spring Security 是一款基于 Spring 框架的安全框架,用于保护 Web 应用程序中的资源,例如 URL、方法调用等。它提供了诸如身份验证、权限管理、密码加密等功能,可以帮助开发人员快速构建安全性高、可靠性强的 Web 应用程序。

11.Spring 框架中的常用注解有哪些?请解释它们的作用。

Spring 框架中的常用注解包括:

1)@Autowired:用于自动装配 Bean 实例,消除了传统 XML 配置的繁琐操作;

2)@Component:用于声明一个 Bean 组件;

3)@Configuration:用于声明一个配置类,类似于 XML 配置文件;

4)@RequestMapping:用于映射 HTTP 请求到控制器的处理方法上;

5)@Service:用于声明一个服务层组件;

6)@Repository:用于声明一个数据访问层组件。

12.请解释一下 Spring 的 IOC(Inverse of Control)容器是如何工作的。

IOC 容器是 Spring 框架的核心,它通过自动装配或配置文件中的声明,将应用程序中的对象和它们之间的关系装配到 Spring 容器中。Spring 容器在应用启动时自动扫描并管理所有 Bean 对象,使用它们来构建应用程序的组件和服务。

13.Spring 框架中的 BeanFactory 和 ApplicationContext 有什么区别?

BeanFactory 是 Spring 框架的基础设施,它是 Spring 容器的核心接口,提供了一种基本的 Bean 容器的实现。它支持基本的 IoC 功能,例如依赖注入、Bean 生命周期管理等。

ApplicationContext 是 BeanFactory 接口的子接口,它提供了更多的功能,例如国际化支持、事件发布、资源加载等。它也提供了一种便捷的方式来进行 Bean 的装配和管理,可以很方便地与 Spring AOP、Spring ORM、Spring MVC 等其他功能集成。

14.什么是 Spring 的切面(Aspect)?

Spring 的切面是指一个横跨多个类和/或对象的关注点,例如事务处理、日志记录。

在 Spring AOP 中,开发人员可以通过定义一个切面,将该横切关注点从目标对象中分离出来,以实现对目标对象的统一增强。

15.Spring 提供了哪些不同的数据库访问方式?

Spring 提供了很多不同的方式来访问数据库,包括:

1)JDBC:使用 JDBC API 进行数据库访问;

2)ORM 框架:例如 Hibernate、Mybatis 等,通过 ORM 框架进行对象关系映射;

3)JPA:Java Persistence API,是一种 ORM 规范,支持多种不同的 ORM 实现;

4)Spring JDBC:Spring 对 JDBC 的封装,提供了一种基于模板的方式来访问数据库。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LSuccess

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值