Spring面试问题和答案
转载:https://blog.csdn.net/sxdtzhaoxinguo/article/details/80504839
Spring框架是一个开放源码框架,用于解决企业应用程序开发的复杂性。Spring框架的主要优势之一是它的分层架构,它允许您对所使用的组件进行选择。Spring的主要模块是Spring核心、Spring AOP和Spring MVC。
2.Spring框架的主要特性是什么?
轻量级:
在规模和透明度方面,spring是轻量级的。spring框架的基本版本大约是1 MB。处理开销也可以忽略不计.
控制反转 (IOC):
依赖注入或控制反转的基本概念是,程序员不需要创建对象,而是描述如何创建对象.
面向方面(AOP):
Spring支持面向方面的编程。
面向方面的编程是指将次要或支持功能与主程序的业务逻辑隔离的编程范例。AOP是一种很有前途的技术,用于分离横切关注点,这在面向对象编程中通常很难做到。应用程序的模块化以这种方式增加,并且它的维护变得更加容易。
容器:
Spring包含并管理应用程序对象的生命周期和配置。
MVC框架:
Spring提供了基于核心Spring功能的MVC web应用程序框架。这个框架可以通过策略接口进行高度的可配置,并且可以容纳多个视图技术,如JSP、Velocity、tile、iText和POI。
事务管理:
Spring框架为事务管理提供了一个通用的抽象层。这使得开发人员可以添加可插拔的事务管理器,并且可以轻松地在不处理底层问题的情况下事务。
JDBC的异常处理:
Spring的JDBC抽象层提供了一个有意义的异常层次结构,它简化了错误处理策略。与Hibernate、JDO和iBATIS的集成:Spring提供了与Hibernate、JDO和iBATIS的最佳集成服务。
3.解释Spring的主要模块?
Spring AOP:
Spring的关键组件之一是AOP框架。AOP在Spring中使用:
提供声明性的企业服务,特别是作为EJB声明式服务的替代品。最重要的服务是声明式事务管理,它建立在Spring的事务抽象之上。
允许用户实现自定义的切面,补充他们使用AOP的OOP的使用。
Spring ORM:
ORM包与数据库访问有关。它为流行的对象关系映射api提供集成层,包括JDO、Hibernate和iBatis。
Spring Web:
Spring Web模块是Spring的一部分?s web应用程序开发堆栈,其中包括Spring MVC。
Spring DAO:
Spring的DAO(Data Access Object)支持主要用于使用JDBC、Hibernate或JDO等技术标准化数据访问工作。
Spring Context:
此包构建在bean包之上,以增加对消息源的支持和观察者的设计模式支持,以及应用程序对象使用一致的API获得资源的能力。
Spring Web MVC:
这是为web应用程序提供MVC实现的模块。
Spring Core:
核心包是Spring框架中最重要的组件。
该组件提供依赖性注入特性。BeanFactory提供了一种工厂模式,它将诸如初始化、创造和访问对象与实际程序逻辑的访问分离开来。
4. 什么是Spring的依赖注入(IOC)?
依赖注入的基本概念(也称为控制模式反转)是指您不创建对象,而是描述如何创建对象。您不会将组件和服务直接连接到代码中,而是描述配置文件中哪些组件需要哪些服务。一个容器(在Spring框架的情况下,IOC容器)负责将其连接起来。
即。在应用IoC时,对象在创建时被一些外部实体赋予它们依赖关系,这些实体负责协调系统中的每个对象。也就是说,依赖项被注入到对象中。因此,IoC意味着对于对象如何获得对协作对象的引用的责任倒置。
5. 在Spring中注入依赖性的方法是什么?
在Spring中有两种方法来进行依赖性注入。
通过setter方法的依赖注入.
依赖注入通过构造函数.
6. 在Spring中Bean是什么?
由Spring IOC容器管理的普通POJO类被称为Spring bean。它是Spring应用程序的核心部分.
例如:
<bean id="countryBean" class="com.micai.spring.model.Country"><property name="countryName" value="India"/><property name="capital" ref="CapitalBean"/>
</bean>
7. 如何在应用程序中配置Spring?
有三种方法可以做到这一点。
基于XML的配置.
基于Java的配置.
基于注释的配置。
8. 什么是基于Spring XML的配置?
在基于Spring XML的配置中,您定义了XML文件中的所有相依性。您可以在XML文件中定义所有bean,并且所有依赖项都是使用这些XML文件读取的.
例如 :
Sample applicationContext.xml file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="CountryBean" class="com.micai.spring.model.Country"><property name="countryName" value="India"/><property name="capital" ref="CapitalBean"/></bean><bean id="CapitalBean" class="com.micai.spring.model.Capital"><property name="capitalName" value="Delhi"/></bean>
</beans>
9. 什么是Spring java的配置?
在Spring Java的配置中,您只使用Java类注入所有依赖项。你可以使用@Configuaration和@bean注解来完成它.
package com.micai.spring.config;import com.micai.spring.model.Country;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 描述:* <p>** @author: 赵新国* @date: 2018/5/29 13:51*/
@Configuration
public class ApplicationConfiguration {@Bean(name = "countryObj")public Country getCountry() {return new Country("India");}
}
上面的文件等价于下面的spring配置xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/> <bean id="countryObj" class="com.micai.spring.model.Country" ><property name="countryName" value="India"/></bean>
</beans>
要获得bean到应用程序上下文,您需要使用下面的代码
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
Country country = (Country) applicationContext.getBean("countryObj");
10. 什么是spring注解的配置?
您也可以通过注释来进行依赖注入,而不是XML配置。你可以使用注解来定义bean的自动装配。您可以使用@Component,@Repository,@Service和 @Controller注释来在Spring应用程序中配置bean。
在默认情况下,注释连接不会打开。你需要打开它 :
<?xml version="1.0" encoding="UTF-8"?>
<bean>
<context:annotation-config/>
</beans>
一旦您输入了以上代码,您就可以开始在类、字段或方法上使用注释了.
11. 在Spring中不同的bean范围是什么?
在spring中支持的bean范围有5种类型:
singleton – 在每个Spring IoC容器中对单个对象实例进行单一bean定义.
prototype – 每次请求时返回一个新的bean实例
request – 每个HTTP请求返回一个bean实例.
session – 每个HTTP会话返回一个bean实例.
globalSession – 在每个全局HTTP会话中返回单个bean实例.
12. 在Spring中,bean的默认范围是什么?
singleton是Spring中bean的默认范围。如果你想要不同的范围,你必须显式地改变一个bean的范围.
13. 什么是ApplicationContext,它的功能是什么?
ApplicationContext是向应用程序提供配置信息的中心接口.
一个ApplicationContext提供了以下功能:
Bean工厂方法,从ListableBeanFactory继承。这就避免了应用程序使用单例的需求.
解决消息、支持国际化的能力。从MessageSource接口继承的.
以通用的方式加载文件资源的能力。从ResourceLoader接口继承的.
发布事件的能力。实现必须提供一种注册事件监听器的方法.
继承父上下文中的继承。后代上下文中的定义总是优先考虑的。这意味着,例如,一个单例上下文可以被整个web应用程序使用,而每个servlet都有自己的子上下文,独立于任何其他servlet.
14. 如何在Spring中注入集合?
您可以使用列表和value标记初始化集合:
<bean id="country" class="com.micai.spring.model.Country"><property name="countryName" value="India"/><property name="capitalList"><list><value>aaa</value><value>bbb</value><value>ccc</value><value>ddd</value></list></property>
</bean>
15. Spring的自动装配是什么意思?
在Spring框架中,您可以自动地用自动连接功能将bean连接起来。为了启用它,只需定义“autowire”属性,Spring容器可以在不使用的情况下自动连接协作bean之间的关系,也可以帮助减少XML配置的数量。
<bean id="country" class="com.micai.spring.model.Country" autowire="byName">
16. 什么是Spring支持的不同的自动装配模式?
有以下的自动装配模式,可以用来指示Spring容器使用自动连接进行依赖注入.
no:
默认情况下,没有自动连接,通过“ref”属性手动设置它,就像我们通过settor方法post在依赖注入中所做的那样.
byName:
由属性名自动装配。Spring容器查看在XML配置文件中将autowire属性设置为byName的bean的属性,并试图将其与XML配置文件中的bean名称相匹配.
byType:
通过属性数据类型自动装配。Spring容器查看在XML配置文件中将autowire属性设置为byType的bean的属性。然后,如果它的类型与配置文件中的一个bean名称相匹配,那么它就会尝试匹配并连接一个属性。如果有不止一个这样的bean存在,就会抛出一个致命的异常.
contructor:
构造函数参数中的byType模式.
autodetect:
Spring首先尝试通过构造器使用autowire,如果它不起作用,Spring尝试通过byType自动连接.
17. Spring AOP是什么?
面向方面的编程是一种类似于面向对象编程的编程范式。面向对象编程的关键单元是类,类似于AOP的关键单元是方面。方面支持诸如事务管理之类的关注点的模块化,它跨越多个类和类型。它也称为横切关注点.
18. 在Spring AOP中,什么是方面、建议、连接点和切入点?
Aspect: 方面是一个实现跨越不同类的关注点的类,比如logging。它只是一个名字.
Joint Point : 它是程序执行的一个点,例如方法的执行。在Spring AOP中,连接点总是表示方法执行.
Advice : 由方面在特定的连接点上采取的行动。例如:在执行getEmployeeName()方法之前,put logging。这里,我们在建议之前使用.
Pointcut : 切入点是决定在匹配的连接点上执行建议的表达式。Spring在默认情况下使用AspectJ切入点表达式语言.
19. 在Spring中什么@Qualifier注解?
你可以在XML配置中有多个相同类型的bean但是你想要自动连接其中一个,所以@Qualifier消除了由@Autowired创建的混乱,通过声明哪个bean是自动连接的。
20. 在Spring中什么@Required注解?
这个注释仅仅表明受影响的bean属性必须在配置时填充:要么通过bean定义中的显式属性值,要么通过自动装配。如果受影响的bean属性没有被填充,容器将抛出异常;这允许出现急切和显式的故障,避免NullPointerExceptions或稍后的类似。
假设你有一个非常大的应用程序,你会得到NullPointerExceptions,因为需要的依赖没有被注入,所以很难找出哪里出了问题。这个注释帮助我们调试.
Spring面试问题和答案相关推荐
- spring面试问题与答案集锦
我收集了一些spring面试的问题,这些问题可能会在下一次技术面试中遇到.对于其他spring模块,我将单独分享面试问题和答案. 如果你能将在以前面试中碰到的,且你认为这些应该是一个有spring经验 ...
- 面试题:460道Java后端面试高频题答案版「模块九:Spring」
Spring 写在前面 相信对于 Spring 这个模块,只要是做过 Java 开发的同学都是不陌生的,或多或少都使用过 Spring 体系的框架.对于平时自己做点小项目会写配置文件可能就行了,但是对 ...
- 真肝,整理了一周的Spring面试大全【含答案】,吊打Java面试官
对于Java的小伙伴来说,Spring是面试的必问环节,我研究Spring多年,甚至我的网名都叫SpringMeng. 最新整理的数据结构和算法的值得收藏: ❤️肝完了,一天掌握数据结构和算法面试题, ...
- 2020年,阿里最新的java程序员面试题目含答案带你吊打面试官
目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15点) JAVA开发技术面试中可能问到的问题(17问) 阿里技术面试1 1.Java I ...
- 20道jQuery 常见的面试问题和答案
在使用这个优秀的库之前写过原生的JavaScript,仅仅在用过它的一个月之后,我就能意识到jQuery的真正力量. 鉴于它的巨大人气,有关jQuery的面试问题,以及有关HTML和JavaScrip ...
- 马士兵java面试八股文及答案
马士兵java面试八股文及答案 Java面向对象有哪些特征,如何应用 HashMap原理是什么,在jdk1.7和1.8中有什么区别 ArrayList和LinkedList有什么区别 高并发中的集合有 ...
- 太肝了 5年来最火183个Java面试问题含答案(
文末有彩蛋 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在 ...
- 最常见的 20 个 jQuery 面试问题及答案
毫无疑问,jQuery给了JavaScript急需的提振,这是一门如此有用,但同时总是常常被低估的语言. 在 jQuery 粉墨登场之前,我们曾今会写出冗长的JavaScript代码,不仅仅为更大型的 ...
- 2022最新出炉的软件测试面试宝典附答案
一.引言 1.1 文档目的 本次文档是为了收集在面试中遇到的一问题与常见的一些答案并不是唯一答案 二.职业规划 2.1 简单的自我介绍下 面试宫,您好,我叫 XXX,来自于 XXXX,目前从事软件测试 ...
- 网易社招面试问题及答案
网易社招面试问题及答案 1.redis有哪几种数据结构?给你一个key怎么知道是用的哪种结构? 字符串 使用string时,redis大多数情况下并不会理解或者解析其含义,无论使用json.xml还是 ...
最新文章
- Delphi的“Invalid pointer operation“异常的解决办法
- mysql的连表查询_MySQL_连表查询
- 【ARM】Tiny4412裸板编程之异常(软中断)
- 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法...
- 15个顶级Java多线程面试题及答案
- 连接hadoop java.io.IOException:Could not locate executable null\bin\winutils.exe in the Hadoop binarie
- 计算机专业论文范文精选,计算机毕业论文提纲范文精选
- 【JS】逻辑运算符 非! 与 或||(处理对象时注意)
- 春晚鬼畜 B 站日排行最高,赵本山:我的时代还没有结束!
- puppet连载15:搭建zabbix服务端、客户端
- Django 1.10中文文档-聚合
- APP开发难吗?澳大利亚10岁儿童已开发5个手机App
- 分享个短视频竞品分析报告
- 那些年,我们一起追过的seo培训!
- android 百度地图定位图标素材,百度地图定位开发图标大全 百度地图开发可以用到的一些实用标注/图标(baidu map development) - 下载 - 搜珍网...
- 舵机常见问题原理分析及解决办法
- 纽约大学历年本科生录取数据分析
- HTML对表格隔行变色
- 算法学习-图像的数据格式BGR
- 利用CNN进行句子分类的敏感性分析
热门文章
- cydia无法安装卸载插件_【初识太极】CAD卸载不干净无法重新安装怎么办?
- PySpark-Recipes : 写数据到Hive(local data)
- Santander价值预测挑战(Feature Select + BayesSearchCV + LightGBMRegressor)
- 查看AWS中Identity and Access Management(IAM)的Access Key和Secret Access
- 什么是java OOM Out Of Memory 内存溢出?如何分析及解决oom问题?
- 2021-09-0723. 合并K个升序链表
- JZ29 最小的K个数 剑指Offer 40
- Leetcode 344:Reverse String 反转字符串
- php 调用dll静态库,vue-cli 2.x 项目优化之引入本地静态库文件
- 橘子游戏平台_腾讯游戏主播认证名单公布,唯独张大仙缺席