Springboot面试大全2019年

1. spring boot基本概念**
    随着新功能的增加,spring变得越来越复杂。只需访问页面https://spring.io/projects,我们将看到所有在应用程序中使用的不同功能的spring项目。如果必须启动一个新的spring项目,我们必须添加构建路径或maven依赖项,配置application server,添加spring配置。因此,启动一个新的spring项目需要大量的工作,因为我们目前必须从头开始做所有事情。Spring Boot是这个问题的解决方案。Spring boot构建在现有Spring框架之上。使用spring boot,我们可以避免以前必须执行的所有样板代码和配置。因此,Spring boot帮助我们更健壮地使用现有的Spring功能,并且只需最少的工作量。
2.使用Spring Boot有什么优点**
 (1) 减少开发、测试的时间和工作量。
 (2)使用JavaConfig进行配置,有助于避免使用XML。
 (3)避免大量maven导入和各种版本冲突。
 (4)提供可选的开发方法。
 (5)通过提供默认开发方式进行快速开发
 (6)不需要单独的Web服务器。这意味着您不再需要启动Tomcat、Glassfish或其他任何东西。   
 (7)由于没有web.xml文件,所以需要更少的配置。只需添加带@ configuration注释的类,然后可以添加带@ bean注释的方法,Spring将自动加载对象并像往常一样管理它。您甚至可以将@Autowired添加到bean方法中,使Spring autowire成为bean所需的依赖项。
 (8)基于环境的配置——使用这些属性,您可以将其传递到您正在使用的应用程序环境中:- dspring .profile .active={enviorement}。在加载主应用程序属性文件之后,Spring将在(application-{environment}.properties)处加载后续的应用程序属性文件。
3.主要构建工具来开发Spring引导应用程序**
Spring Boot应用程序可以使用Maven和Gradle开发。
4.JavaConfig基本概念和优点**
(1) Spring JavaConfig是Spring社区的一个产品,它提供了一种纯java方法来配置Spring IoC容器。因此,它有助于避免使用XML配置。
(2)JavaConfig优点:  
        1)面向对象的配置。因为配置在JavaConfig中定义为类,所以用户可以充分利用Java中的面向对象特性。一个配置类可以子类化另一个配置类,覆盖它的@Bean方法,等等。
        2)减少或消除XML配置。已经证明了基于依赖注入原则的外部化配置的好处。然而,许多开发人员不愿意在XML和Java之间来回切换。JavaConfig为开发人员提供了一种纯java方法来配置Spring容器,这种方法在概念上类似于XML配置。从技术上讲,仅使用JavaConfig配置类来配置容器是可行的,但是在实践中,许多人发现将JavaConfig与XML混合并匹配是理想的。 
        3)类型安全的重构能力。JavaConfig提供了一种类型安全的配置Spring容器的方法。由于Java 5.0对泛型的支持,现在可以通过类型而不是名称检索bean,不需要进行任何基于类型转换或字符串的查找。
5.在Spring引导时自动重新加载不重启服务器**
 Spring Boot有一个开发人员工具(DevTools)模块,它有助于提高开发人员的工作效率。Java开发人员面临的关键挑战之一是将文件更改自动部署到服务器并自动重启服务器。开发人员可以在Spring引导时重新加载更改,而不必重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布第一个版本时没有这个特性。这是开发人员最需要的特性。DevTools模块完全满足开发人员的需求。此模块将在生产环境中禁用。它还提供了H2-database控制台,以便更好地测试应用程序。使用以下依赖项
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>														


6.Spring boot actuator基本概念**
    Spring boot actuator是Spring boot framework的重要特性之一。Spring boot actuator帮助您访问生产环境中正在运行的应用程序的当前状态,在生产环境中必须检查和监视几个指标。甚至一些外部应用程序也可能使用这些服务来触发对相关人员的警报消息。actuator模块公开一组REST端点,这些端点可以作为HTTP URL直接访问,以检查状态。
7.Spring Boot应用程序作为war包部署步骤

(1) Spring Boot WAR部署:

   1)修改 Application类 新加@ServletComponentScan注解,并且继承SpringBootServletInitializer 。
@SpringBootApplication
@ServletComponentScan
public class Application extends SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
2)修改 pom.xml文件,新加打包成war的声明:
  <groupId>cn.xdf</groupId>
  <artifactId>springbootTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>springboot </name>
  <description>springboot </description>
  <packaging>war</packaging>
 <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            
            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-jar-plugin</artifactId>
             <version>2.5</version>
             </plugin>
        </plugins>

注意:如果tomcat启动失败

(2)解决方案:

 该错是由于application启动类中嵌入的tomcat与部署war的tomcat冲突引起的,需要在pom.xml添加配置,来避免冲突!

在pom.xml添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
8.将Spring引导应用程序部署到Docker**
将基于Spring的WAR应用程序部署到Docker
将基于Spring的JAR应用程序部署到Docker
9.如何禁用执行器端点安全在Spring启动
   默认情况下,所有敏感的HTTP端点都是安全的,只有具有ACTUATOR角色的用户才能访问它们。安全性是使用标准HttpServletRequest.isUserInRole方法实现的。我们可以使用-禁用安全性    management.security.enabled = false  建议仅当在防火墙后访问ACTUATOR端点时禁用安全性。
10.将Spring引导应用程序运行到自定义端口
要在自定义端口上运行spring引导应用程序,可以在application.properties中指定端口。

server.port = 8090

11.使用Spring Boot编写测试用例
SpringBoot为编写单元测试用例提供了@SpringBootTest
12.YAML是什么
   YAML是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,YAML文件的结构更加结构化,如果我们希望在配置文件中添加复杂的属性,那么它不会造成太大的混乱。可以看到,YAML具有分层的配置数据。
13.如何为Spring引导应用程序实现安全性
 为了实现Spring Boot的安全性,我们使用Spring - Boot -starter-security依赖项,必须添加安全配置。它只需要很少的代码。Config类必须扩展WebSecurityConfigurerAdapter并覆盖它的方法。
14.如何集成Spring Boot和ActiveMQ
为了集成Spring Boot和ActiveMQ,我们使用Spring - Boot -starter- ActiveMQ依赖项,它只需要很少的配置,没有样板代码。
15.如何集成了Spring Boot和Apache Kafka
集成Spring Boot和Apache Kafka,我们使用Spring - Kafka依赖项。
16.如何使用Spring引导实现分页和排序
  使用Spring Boot实现分页非常简单。使用Spring Data-JPA,这是通过传递可分页的org.springframe .data.domain来实现的。可分页到存储库方法。
17.Spring Profiles和如何使用Spring Boot实现它
 Spring Profiles允许用户根据配置文件(dev, test, prod等)注册bean。因此,当应用程序在开发中运行时,只能加载某些bean,当应用程序在生产中运行时,只能加载某些其他bean。假设我们的需求是Swagger文档只对QA环境启用,对所有其他环境禁用。这可以使用配置文件来完成。Spring Boot使得使用配置文件非常容易。
18.什么是Spring Boot Batch和如何使用Spring Boot实现它
Spring Boot Batch提供了处理大量记录所必需的可重用功能,包括日志/跟踪、事务管理、作业处理统计信息、作业重启、作业跳过和资源管理。它还提供了更高级的技术服务和特性,通过优化和分区技术,这些特性将支持极高容量和高性能的批处理作业。无论是简单的还是复杂的,大容量批处理作业都可以以高度可伸缩的方式利用该框架来处理大量信息。
19.什么是FreeMarker模板和如何使用Spring Boot实现它
   FreeMarker是一个基于java的模板引擎,最初专注于使用MVC软件架构生成动态web页面。使用Freemarker的主要优势是完全分离了表示层和业务层。程序员可以处理应用程序代码,而设计人员可以处理html页面设计。最后,使用freemarker,这些可以组合在一起,给出最终的输出页面。
20.如何使用Spring Boot实现异常处理
Spring提供了一种非常有用的方法,可以使用ControllerAdvice处理异常。我们将实现一个ControlerAdvice类,它将处理控制器类抛出的所有异常。
21.使用Spring Boot公开了SOAP web服务端点

使用Spring Boot公开了要使用的web服务。使用契约优先的方法从wsdl生成类。

22.使用Spring Boot执行数据库操作
      Spring引导教程-Spring Data JPA
23.如何用Spring Boot实现拦截器
使用Spring MVC HandlerInterceptor与Spring引导
24.您使用过哪些启动器maven依赖项
使用过不同的starter依赖项,如spring-boot-starter-activemq依赖项、spring-boot-starter-security依赖项、spring-boot-starter-web依赖项。这有助于减少依赖项的数量,并减少版本组合。
25.CSRF攻击基本概念和如何启用CSRF对其进行保护
  CSRF代表跨站请求伪造。它是一种攻击,迫使最终用户在其当前已经过身份验证的web应用程序上执行不需要的操作。CSRF攻击专门针对状态更改请求,而不是数据窃取,因为攻击者无法看到对伪造请求的响应。
26.GZIP基本概念和如何使用Spring Boot实现它
 gzip是一种文件格式,是一种用于文件压缩和解压缩的软件应用程序。
27.Apache Freemarker基本概念和如何与Spring Boot集成
  JSP是为网页量身定做的,Freemarker模板是一种更通用的模板语言——它可以用来生成html、纯文本、电子邮件等。
28.AOP基本概念和如何与Spring Boot一起使用
  在软件开发过程中,跨越应用程序多个点的功能称为横切关注点。这些横切关注点不同于应用程序的主要业务逻辑。因此,将这些横切关注点从业务逻辑中分离出来是面向方面编程(AOP)的切入点。
29.Apache Kafka基本概念和如何与Spring Boot集成
   apache Kafka是一个分布式发布-订阅消息传递系统。它是一个可伸缩的、容错的、发布-订阅消息传递系统,使我们能够构建分布式应用程序。这是一个Apache顶级项目。Kafka适用于离线和在线的消息消费。
30.如何监视所有Spring Boot微服务
   Spring Boot提供了actuator 端点来监控单个微服务的指标。这些端点对于获取关于应用程序的信息非常有帮助,比如应用程序是否启动,它们的组件(如数据库等)是否正常工作。但是,使用actuator 接口的一个主要缺点或困难是,我们必须逐个命中这些接口,以了解应用程序的状态或健康状况。假设微服务涉及50个应用程序,管理员将不得不命中所有50个应用程序的actuator 端点。为了帮助我们处理这种情况,我们将使用位于https://github.com/codecentric/springing-boot-admin的开源项目。它构建在Spring Boot Actuator之上,提供了一个web UI,使我们能够可视化多个应用程序的指标。
31.在Spring引导中使用过Spring Cloud组件
   使用过Netflix Eureka等Spring Cloud组件进行服务注册,Ribbon用于负载平衡。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值