Java面试题总结之Spring高频面试题

一、题目:谈谈你对Spring框架的理解

                1.Spring是一个开源框架,主要是为简化企业级应用可开发而生,可以实现EJB可以实现的功能,Spring是一个IOC和AOP容器框架。

                ①控制反转(IOC):Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想

                ② 依赖注入(DI):Spring使用Java Bean对象的Set方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖,这事注入的基本思想

                ③ 面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象,而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证、事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想

                2.在Spring中,所有管理的都是JavaBean对象,而BeanFactory和ApplicationContext就是Spring框架的那个IOC容器,现在一般使用ApplicationContext,其不但包括了BeanFactory的作用,同时还进行了更多的扩展

二、题目:Spring由哪些模块组成

        Spring框架由许多模块组成,每个模块都专注于不同的功能和领域,截止到目前Spring框架已集成了20多个模块,这些模块主要被分为核心容器、数据访问/集成、Web、AOP(面向切面编程、工具、消息和测试模块等等)

                1.Spring Core(核心容器):这是Spring框架的核心模块,提供了IOC容器和依赖注入的功能,它包含了BeanFactory接口和ApplicationContext接口等关键组件,用于管理和配置应用程序中的对象。BeanFactory来产生和管理Bean,它是工厂模式的实现,它使用控制反转模式将应用的配置和依赖性规范与实际的应用程序代码分开

                2.Spring MVC(Spring Web MVC):这个模块是用于构建Web应用程序的框架,它提供了一个基于模型-视图-控制器(Model-View-Controller)设计模式的架构,用于处理HTTP请求和响应,并支持灵活的URL映射、数据绑定、视图解析等功能,MVC框架是一个全功能的构建Web应用程序的MVC实现,通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中包括JSP、POI等,模型由JavaBean构成,存放在m当中,而视图是一个接口,负责实现模型,控制器表示逻辑代码的事情

                3.Spring Boot(Spring引导):这事一个用于简化Spring应用程序开发的模块,它提供了自动配置、快速构建和部署等功能,使得开发人员可以更快地搭建和运行Spring应用程序,同时提供了一致的开发体验和更少的样板代码

                4.Spring Data(Spring数据):这个模块提供了对各种数据访问技术的集成支持,如关系型数据库、NoSQL数据库、缓存等,它简化了数据访问层的开发,提供了统一的API和查询语言,以及对事务管理的支持

                5.Spring Security(Spring安全):这事一个用于身份验证、授权和安全管理的模块,它提供了各种功能,包括用户认证、访问控制、加密解密、记住我功能等,用于保护应用程序的安全性

                6.Spring Integration(Spring集成):这个模块用于实现企业级应用程序的集成和消息传递,它提供了用于构建消息驱动的应用程序的组件和模式,如消息通道、消息转换、路由、过滤等

                7.SpringCloud(Spring云):这事一个用于构建分布式系统和微服务架构的模块,它提供了一系列的功能和工具,如服务注册与发现、负载均衡、断路器模式、分布式配置等,用于简化分布式系统的开发和部署

                8.SpringAOP(面向切面编程):是面向对象编程的有效补充和完善,Spring和AOP是基于动态代理实现的

                9.SpringDao(JDBC和Dao模块):JDBC、DAO的抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理、和不同数据库供应商所抛出的错误信息,异常层次结构简化了错误处理,并且极大的降低了需要编写的代码数量,比如打开和关闭链接

                10.Spring ORM(对象实体映射):Spring框架插入了若干个ORM框架,从而提供了ORM对象的关系工具,其中包括了Hibernate、JDO和IBatis SQL、Map等,所有这些都遵从Spring的通用事务和DAO异常层次结构

                11.Spring Web(Web模块):Web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供了上下文,所以Spring框架支持与Struts集成,web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作

                除了上述模块外,Spring框架还有许多其他的模块和扩展,如Spring Batch(批处理)、Spring Web Services(Web服务)、Spring Mobile(移动应用)、Spring HATEOAS(构建超媒体驱动的RESTful服务)等,用于满足不同的开发需求和场景,Spring框架的功能可以用在任何J2EE服务器当中,大多数功能也适用于不受管理的环境,Spring的核心要点就是支持不绑定到特定J2EE服务的可重业务和数据的访问的对象,毫无疑问这样的对象可以在不同的J2EE环境,独立应用程序和测试环境之间重用

三、题目:在Spring中有几种配置Bean的方式?(高频)

                配置方式: 1、基于XML的配置

                                        2、基于注解的配置

                                        3、基于Java的配置

四、题目:BeanFactory和ApplicationContext有什么区别(高频)

                1.BeanFactory:BeanFactory在启动的时候不会去实例化Bean,当从容器中拿Bean的时候才会去实例化

                2.ApplicationContext:ApplicationContext在启动的时候就把所有的时候就把所有的Be an全部实例化了,它还可以为Bean配置lazy-int=true来让Bean延迟实例化

五、题目:Spring框架中的单例bean是线程安全的吗

                不是线程安全的,当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行改请求对应的业务逻辑(成员方法), 此时就要注意,如果该处理逻辑中有对该单列状态的修改(体现为该单例的成员属性),则必须考虑线程同步问题,Spring框架并没有对单例bean进行任何多线程的封装处理,关于单例bean的线程安全和并发问题需要开发者自行去搞定,但实际上,大部分的Spring bean并没有可变的状态(比如Service类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的,如果你的bean有多种状态的话(比如View Model对象),就需要自行保证线程安全,最浅显的解决办法就是将多态bean的作用域由"sington"变更为"prototype"

六、题目:Spring Bean有哪些作用域,它们之间有什么区别

                1、singleton :这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护 

                2、prototype :原形范围与单例范围相反,为每一个bean请求提供一个实例 

                3、request :在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后, bean会失效并被垃圾回收器回收

                4、session:与请求范围类似,确保每个session中有一个 bean 的实例,在session过期后, bean会随之失效 

七、题目:你用过哪些重要的Spring注解

                1.@Controller - 用于 Spring MVC 项目中的处理器类</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值