面试必问之spring 面试题
什么是 Spring Boot?
多年来,随着新功能的增加,spring 变得越来越复杂。只需访问 https://spring.io/projects 页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必 须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程 序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现 在必须从头开始做所有事情。
Spring Boot 是解决这个问题的方法Spring Boot 已经建立在现有 spring 框架之上使用
spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring 帮助我们以最少的工作量,更加健壮地使用现有的 Spring 功能。
Spring Boot 有哪些优点? Spring Boot 的优点有:
Boot 可以
减少开发,测试时间和努力。
使用 JavaConfig 有助于避免使用 XML。
避免大量的 Maven 导入和各种版本冲突。
提供意见发展方法。
通过提供默认值快速开始开发
没有单独的 Web 服务器需要这意味着你不再需要启动 TomcatGlassfish 或其他任何东 西
需要更少的配置 因为没有 web.xml 文件。只需添加用@ Configuration 注释的类,然后添加 用@Bean 注释的方法,Spring 将自动加载对象并像以前一样对其进行管理。您甚至可以将 @Autowired 添加到 bean 方法中,以使 Spring 自动装入需要的依赖关系中。 基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:- Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后,Spring 将在 (application{environment} .properties)中加载后续的应用程序属性文件。
什么是 Spring Profiles?
Spring Profiles 允许用户根据配置文件(dev,test,prod 等)来注册 bean。因此,当应用 程序在开发中运行时,只有某些 bean 可以加载,而在 PRODUCTION 中,某些其他 bean 可 以加载。假设我们的要求是 Swagger 文档仅适用于 QA 环境,并且禁用所有其他文档。这 可以使用配置文件来完成。Spring Boot 使得使用配置文件非常简单。
什么是 Spring Batch?
Spring Boot Batch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟 踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进 的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单 以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。
什么是 FreeMarker 模板?
FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动态网页生 成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序 代码,而设计人员可以处理 html 页面设计。最后使用 freemarker 可以将这些结合起来,给 出最终的输出页面。
如何使用 Spring Boot 实现异常处理?
Spring提供了一种使用ControllerAdvice处理异常的非常有用的方法。 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常。
如果你来哈尔滨环宇互娱科技来面试Java开发的岗位,Spring 是必问的,主要还是源于它的一些优点,如下:
Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。
Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是(dependency injection,DI)和(aspect-oriented programming,AOP)。
为了降低Java开发的复杂性,Spring采取了以下4种关键策略
基于POJO的轻量级和最小侵入性编程;
通过依赖注入和面向接口实现松耦合;
基于切面和惯例进行;
通过切面和模板减少样板式代码。
方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。
方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis等)。
降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。
Spring明明一个很轻量级的框架,却给人感觉大而全
Spring依赖反射,反射影响性能
使用门槛升高,入门Spring需要较长时间
优点
当然,它也有一些缺点,这个不可否认的事实,每个框架都会存在。
缺点
应用场景:JavaEE企业应用开发,包括SSH、SSM等