Spring面试

一、Spring概述

什么是Spring?

Spring是一个轻量级的Java开发框架
它的根本使命是为了解决企业级应用开发的复杂性,简化Java开发
它有两个核心特性,一个是控制反转 IOC,另一个是面向切面编程AOP

Spring的一些优点?

1、ioc
2、aop
3、声明式事务
4、junit 单元测试
5、resource简化的资源的操作
6、方便集成各种框架

Spring由哪些模块组成?

Spring中使用了哪些设计模式

单例模式
工厂模式
代理模式(aop)
模板方法模式 (restTemplate)
观察者模式

详细讲解一下核心容器模块

Spring框架由多个模块组成,其中核心容器模块是Spring框架的核心部分之一。下面将详细讲解Spring核心容器模块。
Spring核心容器模块包括以下四个主要组件:
1、Bean容器(Bean Container):
Bean容器是Spring框架的核心,它负责管理应用程序中的所有Java对象,也被称为Bean。这些Bean可以通过配置文件或Java注解来定义,并由Spring容器负责创建、配置和维护它们的生命周期。
2、Bean工厂(Bean Factory):
Bean工厂是Spring容器的基础接口,它定义了一组方法来管理和获取Bean对象。最常见的Bean工厂实现是DefaultListableBeanFactory。Bean工厂负责实例化、配置和组装Bean,并将它们提供给应用程序的其他部分。
3、应用上下文(Application Context):
应用上下文是Bean容器的高级形式,它扩展了Bean工厂的功能,并提供了更多的企业级功能,如国际化、事件传播、资源加载等。Spring框架提供了多种应用上下文的实现,包括ClassPathXmlApplicationContext、AnnotationConfigApplicationContext等
4、Bean定义(Bean Definition):
Bean定义是Spring容器中每个Bean的元数据信息,它包括Bean的类名、作用域、属性、依赖关系等配置信息。Bean定义可以通过XML配置文件、Java注解或Java代码来定义。Spring容器根据这些定义来创建和管理Bean的实例。

Spring中有哪些不同类型的事件?

二、Spring的控制反转 IOC

SpringIoc的实现机制

Spring的IOC支持哪些功能

Spring的ioc设计支持一下功能:

  • 依赖注入
  • 依赖检查
  • 自动装配
  • 指定初始化方法和消费方法

BeanFactory和ApplicationContext的区别

BeanFactory和ApplicationContext 是Spring的两大核心接口,都可以当成Spring的容器。其中ApplicationContext是BeanFactory的子接口

BeanFactory:Spring里面最底层的接口,它的主要作用有

  • Bean的管理
  • Bean的依赖注入
  • Bean的生命周期管理
  • Bean的作用域管理

ApplicationContext:作为BeanFactory的子接口,除了提供BeanFactory的所有功能外,还提供了更加完整的框架功能

  • spring resource
  • 国际化
  • 更多的上下文实现
  • aop自动代理
  • 集成更多的企业服务

ApplicationContext的通常实现

有哪些不同类型的依赖注入的实现方式?

set方法注入
构造器注入
静态工厂
实例工程
p方法注入

SpringBeans

一个SpringBean的定义包含什么?

如何创建一个bean,生命周期,它的依赖关系

Spring基于xml有几种注入方式

set注入
构造器注入
p方法注入
静态工程注入
实例工程注入

SpringBean的几种作用域

Spring框架中的单例Bean是线程安全的吗

不是线程安全的

但是Spring中的Bean大多是无状态的。

什么是无状态?
多线程有共享数据就是有状态的
么有共享数据就是无状态的

解释下Spring框架中Bean的生命周期

使用@Autowired注解自动装配的过程是怎样的?

首先根据type进行查找
如果有多个,则将属性名称作为name进行查找
如果再有多个,则进行报错

Spring注解

@Autowired 和 @Resource注解之间的区别

@Autowired 可以用在成员变量、setter方法、构造方法上;@Resource只能用于成员变量上
@Autowire是按照类型进行注入(默认情况下要求对象必须存在);@Resource是按照名称进行注入,只有在找不到对象的情况下才会按照类型进行注入

@Qualifier注解的作用

Spring数据访问

Spring的orm模块是什么,以及如何使用?

Spring的ORM(Object-Relational Mapping)模块是Spring框架的一部分,用于简化Java应用程序与关系型数据库之间的交互和数据持久化操作。

ORM模块的目标是通过将数据库表映射到Java对象,使数据的存储和检索更加方便,同时提供了一种对象化的数据库操作方式,从而减少了开发人员处理数据库相关的繁琐任务的工作量。

SpringDao有什么用?

Spring中的DAO(Data Access Object)是一种设计模式和一种组件,用于将数据访问层与业务逻辑分离,
Spring的DAO主要用于以下几个方面:

  • service模块和数据访问模块隔离:DAO封装了数据访问逻辑,将数据库查询、更新和事务处理等细节隐藏在后台,使业务逻辑能够专注于业务需求而不必关心数据存取的具体实现。
  • 提供异常处理:DAO通常处理数据库访问期间可能发生的异常,并将它们转化为Spring的数据访问异常,从而简化了错误处理
  • 提供抽象接口:通过DAO接口的定义,将数据访问的方法暴露给业务层,而不是直接与数据库相关的代码。这种抽象性使得可以轻松切换底层数据存储系统而不需要修改业务逻辑。
  • 支持事务管理:Spring的DAO通常与Spring的事务管理机制集成,以确保数据访问操作在事务内进行,并能够支持事务的回滚和提交。

Spring事务

什么是Spring的声明式事务

Spring AOP

什么是Spring AOP

Spring AOP和 AspectJ AOP的区别?

JDK的动态代理和 Cglib代理的区别

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值