东莞网站建设价位,企业网站建设选择兴田德润,成都网络推广网站,wordpress 表情 插件转载自 这些Spring面试题#xff0c;你都会了吗#xff1f;
问题一#xff1a;
什么是Spring#xff1f;
Spring是Enterprise Java的开源开发框架。Spring Framework的核心功能可用于开发任何Java应用程序#xff0c;但有一些扩展用于在Java EE平台之上构建Web应用程…转载自 这些Spring面试题你都会了吗
问题一
什么是Spring
Spring是Enterprise Java的开源开发框架。Spring Framework的核心功能可用于开发任何Java应用程序但有一些扩展用于在Java EE平台之上构建Web应用程序。Spring框架的目标是通过启用基于POJO的编程模型使Java EE开发更易于使用并促进良好的编程实践。
问题二
Spring Framework有哪些优点
轻巧Spring在尺寸和透明度方面都很轻巧。spring框架的基本版本大约为2MB。 控制反转IOC 使用反转控制技术在Spring中实现松耦合。对象提供依赖关系而不是创建或查找依赖对象。
面向方面AOP Spring支持面向方面的编程并将应用程序业务逻辑与系统服务分开。
容器 Spring包含并管理应用程序对象的生命周期和配置。 MVC框架 Spring的Web框架是一个设计良好的Web MVC框架它为Web框架提供了一个很好的替代方案。
事务管理 Spring提供了一致的事务管理界面可以缩小到本地事务并扩展到全局事务JTA。
异常处理 Spring提供了一个方便的API用于将特定于技术的异常由JDBCHibernate或JDO抛出转换为一致的未经检查的异常。
问题三
核心容器应用程序上下文模块是什么
这是基本的Spring模块它提供了Spring框架的基本功能。BeanFactory是任何基于spring的应用程序的核心。Spring框架是在这个模块的顶部构建的它构成了Spring容器。
问题四
AOP模块是什么
AOP模块用于为我们的Spring应用程序开发方面。AOP联盟提供了大部分支持以确保Spring与其他AOP框架之间的互操作性。该模块还向Spring引入了元数据编程。
问题五
解释一下JDBC抽象和DAO模块
使用JDBC抽象和DAO模块我们可以确保我们使数据库代码保持干净和简单并防止因无法关闭数据库资源而导致的问题。它在几个数据库服务器给出的错误消息之上提供了一层有意义的异常。它还利用Spring的AOP模块为Spring应用程序中的对象提供事务管理服务。
问题六
解释一下对象/关系映射集成模块
通过提供ORM模块Spring还支持在直接JDBC上使用对象/关系映射ORM工具。Spring支持绑定到几个流行的ORM框架包括HibernateJDO和iBATIS SQL Maps。Spring的事务管理支持每个ORM框架以及JDBC。
问题七
web模块的作用是什么
Spring Web模块构建在应用程序上下文模块上提供适用于基于Web的应用程序的上下文。此模块还包含对几个面向Web的任务的支持例如透明地处理文件上载的多部分请求以及将请求参数编程绑定到业务对象。它还包含与Jakarta Struts的集成支持。
问题八
Spring MVC模块的作用是什么
Spring提供了MVC框架来构建Web应用程序。Spring可以很容易地与其他MVC框架集成但是Spring的MVC框架是更好的选择因为它使用IoC来提供控制器逻辑与业务对象的清晰分离。使用Spring MVC您可以声明性地将请求参数绑定到业务对象。
问题九
什么是Spring配置文件
Spring配置文件是一个XML文件。此文件包含类信息并描述了这些类是如何配置和相互引入的。
问题十
什么是Spring IoC容器
Spring IoC负责创建对象管理它们使用依赖注入DI将它们连接在一起配置它们以及管理它们的整个生命周期。
问题十一
IOC有什么好处
IOC或依赖注入最小化应用程序中的代码量。它使测试应用程序变得容易因为在单元测试中不需要单例或JNDI查找机制。以最小的努力和最少的侵入机制促进松散耦合。IOC容器支持急切的实例化和延迟加载服务。
问题十二
ApplicationContext的常见实现是什么
该FileSystemXmlApplicationContext来容器从XML文件加载bean的定义。必须将XML bean配置文件的完整路径提供给构造函数。
该ClassPathXmlApplicationContext的容器还加载从XML文件java bean的定义。在这里您需要正确设置CLASSPATH因为此容器将在CLASSPATH中查找bean配置XML文件。
该WebXmlApplicationContext容器从Web应用程序中加载的所有bean类定义的XML文件。
问题十三
Bean Factory和ApplicationContext有什么区别
ApplicationContex提供了一种解析文本消息的方法一种加载文件资源如图像的通用方法它们可以将事件发布到注册为侦听器的bean。此外可以在应用程序上下文中以声明方式处理容器中的容器或容器上的操作这些操作必须以编程方式与Bean Factory一起处理。ApplicationContex实现MessageSource一个用于获取本地化消息的接口实际的实现是可插入的。
问题十四
什么是Spring中的依赖注入
依赖注入是控制反转IoC的一个方面它是一个通用概念它可以用许多不同的方式表达。这个概念说你不创建你的对象而是描述它们应该如何创建。您不能在代码中直接连接组件和服务而是描述配置文件中哪些组件需要哪些服务。然后一个容器IOC容器负责将其全部挂起。
问题十五
有哪些不同类型的IoC依赖注入
基于构造函数的依赖注入当容器调用具有许多参数的类构造函数时完成基于构造函数的DI每个参数表示对其他类的依赖。 基于Setter的依赖注入基于Setter的DI是在调用无参数构造函数或无参数静态工厂方法来实例化bean之后通过容器调用bean上的setter方法来完成的。
问题十六
Spring bean是什么
Spring Beans是构成Spring应用程序主干的Java对象。它们由Spring IoC容器实例化组装和管理。这些bean是使用提供给容器的配置元数据创建的例如以XML定义的形式。
在spring框架中定义的bean是singleton bean。如果指定为true则bean标记中有一个名为“singleton”的属性然后bean变为singleton如果设置为false则bean将成为原型bean。默认情况下它设置为true。因此spring框架中的所有bean都是默认的单例bean。
问题十七
如何为Spring容器提供配置元数据
为Spring容器提供配置元数据有三种重要方法 基于XML的配置文件。 基于注释的配置。 基于Java的配置。
问题十八
如何定义bean的范围
在Spring中定义一个时我们也可以为bean声明一个范围。它可以通过bean定义中的scope属性定义。例如当Spring每次需要生成一个新的bean实例时beansscope属性就是原型。另一方面当每次需要Spring都必须返回相同的bean实例时bean scope属性必须设置为singleton。
问题十九
Spring支持的bean范围有哪些
Spring Framework支持以下五个范围提供了五个范围
在作用域的单重态中Spring将bean定义范围限定为每个Spring IoC容器的单个实例。
在原型范围中单个bean定义具有任意数量的对象实例。
在请求范围中bean被定义为HTTP请求。此范围仅在Web感知的Spring ApplicationContext中有效。
在会话范围中bean定义的范围限定为HTTP会话。此范围仅在Web感知的Spring ApplicationContext中有效。
在全局会话范围中bean定义的范围限定为全局HTTP会话。这也是Web感知Spring ApplicationContext中使用的一种情况。 Spring Bean的默认范围是Singleton。
问题二十
Spring Framework中的Singleton bean线程安全吗
不单例bean在Spring框架中不是线程安全的。
问题二十一
解释Spring框架中的Bean生命周期
spring容器从XML文件中查找bean的定义并实例化bean。
Spring填充bean定义DI中指定的所有属性。
如果bean实现了StringNameAware接口则spring将bean的id传递给setBeanName
如果Bean implementsBeanFactoryAware接口spring将beanfactory传递给setBeanFactory
如果有任何与bean关联的beanBeanPostProcessors则Spring调用postProcesserBeforeInitialization
如果bean implementsIntializingBean则调用其afterPropertySet方法。
如果bean具有init方法声明则调用指定的初始化方法。
如果有任何与Bean关联的BeanPostProcessors则将调用它们的postProcessAfterInitialization方法。
如果bean实现了DisposableBean它将调用destroy
问题二十二
哪些是重要的bean生命周期方法可以覆盖它们吗
有两个重要的bean生命周期方法。第一个是setup当bean加载到容器中时调用。第二种方法是拆卸方法当从容器中卸载bean时调用该方法。
bean标记有两个重要的属性init-method和destroy-method您可以使用它们定义自己的自定义初始化和销毁方法。还有相应的注释PostConstruct和PreDestroy。
问题二十三
Spring的内部beans是什么
当bean仅用作另一个bean的属性时可以将其声明为内部bean。Spring的基于XML的配置元数据提供了bean定义中元素的使用以便定义所谓的内部bean。内部bean总是匿名的它们总是作为原型。
问题二十四
如何在Spring中注入Java Collection
Spring提供以下类型的集合配置元素
在允许重复的情况下该类型用于注入值列表。 该类型用于连接一组值但没有任何重复。 该类型用于注入名称 - 值对的集合其中name和value可以是任何类型。 该类型可用于注入名称 - 值对的集合其中名称和值都是字符串。
问题二十五
什么是Bean wiring
当bean在Spring容器中组合在一起时接线或者bean接线就是这种情况。布线bean时Spring容器需要知道需要什么bean以及容器应该如何使用依赖注入将它们绑定在一起。
问题二十六
什么是bean auto wiring
Spring容器能够自动连接协作bean之间的关系。这意味着可以通过检查BeanFactory的内容而不使用和元素来自动让Spring解析bean的协作者其他bean。
问题二十七
解释不同的自动接线方式
自动装配功能有五种模式可用于指示Spring容器使用自动装配进行依赖注入
no 这是默认设置。应使用显式bean引用进行布线。
byName 当自动装配byName时Spring容器会查看在XML配置文件中autowireattribute设置为byName的bean的属性。然后它尝试匹配并将其属性与配置文件中由相同名称定义的bean相连。
byType 当按数据类型进行自动装配时Spring容器会在XML配置文件中查看autowireattribute设置为byType的bean的属性。然后如果属性的类型与配置文件中的一个bean名称匹配则会尝试匹配并连接属性。如果存在多个这样的bean则抛出致命异常。
构造函数此模式类似于byType但type适用于构造函数参数。如果容器中没有构造函数参数类型的一个bean则会引发致命错误。
autodetect Spring首先尝试通过构造函数使用autowire连接如果它不起作用Spring会尝试通过byType来自动装配。
问题二十八
autowiring有限制吗
autowiring的局限性是
覆盖您仍然可以使用和设置指定依赖项这将始终覆盖自动装配。
基元数据类型 您不能自动装配简单属性例如基元字符串和类。
令人困惑的性质自动装配不如显式布线精确因此如果可能请使用明确的布线。
问题二十九
什么是基于Spring Java的配置给出一些注释示例。
基于Java的配置选项使您可以在没有XML的情况下编写大部分Spring配置但可以使用少量基于Java的注释。
一个示例是Configuration注释它指示Spring IoC容器可以将该类用作bean定义的源。另一个例子是 Bean注释方法它将返回一个应该在Spring应用程序上下文中注册为bean的对象。
问题三十
什么是基于注释的容器配置
基于注释的配置提供了XML设置的替代方案该配置依赖于字节码元数据来连接组件而不是角括号声明。开发人员不是使用XML来描述bean连接而是通过在相关的类方法或字段声明上使用注释将配置移动到组件类本身。
问题三十一
如何打开注释线
默认情况下Spring容器中未打开注释接线。为了使用基于注释的布线我们必须通过配置元素在Spring配置文件中启用它。
问题三十二
如何在Spring框架中更有效地使用JDBC
使用Spring JDBC框架时减少了资源管理和错误处理的负担。因此开发人员只需编写语句和查询即可将数据传入和传出数据库。借助Spring框架提供的模板类JdbcTemplate可以更有效地使用JDBC
问题三十三
Spring DAO支持的作用是什么
Spring中的数据访问对象DAO支持旨在使您能够以一致的方式轻松使用JDBCHibernate或JDO等数据访问技术。这使我们可以非常轻松地在持久性技术和代码之间切换而无需担心捕获特定于每种技术的异常。
问题三十四
使用Spring访问Hibernate有哪些方法
使用Spring访问Hibernate有两种方法 使用Hibernate模板和回调进行控制反转。 ExtendingHibernateDAOSupport并应用AOP拦截器节点。
问题三十五
如何使用HibernateDaoSupport集成Spring和Hibernate
使用名为LocalSessionFactory的Spring的SessionFactory。整合过程包括3个步骤 配置Hibernate SessionFactory 从HibernateDaoSupport扩展DAO实现 使用AOP连接事务支持
问题三十六
事务管理类型的Spring支持有哪些
Spring支持两种类型的事务管理
程序化事务管理 这意味着您已经在编程的帮助下管理了事务。这为您提供了极大的灵活性但很难维护。
声明式事务管理 这意味着您将事务管理与业务代码分开。您只能使用注释或基于XML的配置来管理事务。
问题三十七
Spring Framework的事务管理有哪些好处
它在不同的事务API如JTAJDBCHibernateJPA和JDO之间提供了一致的编程模型。 与许多复杂的事务API如JTA相比它为程序化事务管理提供了更简单的API。 它支持声明式事务管理。 它与Spring的各种数据访问抽象集成得非常好。
问题三十八
哪种交易管理类型更可取
Spring Framework的大多数用户选择声明式事务管理因为它是对应用程序代码影响最小的选项因此最符合非侵入式轻量级容器的理想。声明式事务管理优于程序化事务管理但它不如程序化事务管理灵活后者允许您通过代码控制事务。
问题三十九
什么是AOP
面向方面的编程AOP是一种编程技术它允许程序员模块化横切关注点或行为这些问题或行为跨越典型的责任分工例如日志记录和事务管理。
问题四十
Spring AOP中的关注点和交叉关注点之间有什么区别
关注点是我们希望在应用程序模块中拥有的行为。关注点可以定义为我们想要实现的功能。
跨领域的关注点是一个适用于整个应用程序的问题它会影响整个应用程序。例如日志记录安全性和数据传输是应用程序几乎每个模块都需要的问题因此它们是跨领域的问题。