精华内容
下载资源
问答
  • springboot常见面试题

    2020-10-23 16:48:31
    springboot常见面试题 一、前言 微服务应用中,springboot最常用的java框架。本文将列举springboot相应的面试知识点,来祝同学一臂之力。 对于springboot还不熟悉的同学,可以先花费半小时时间网上随便找一个入门...

    springboot常见面试题

    一、前言

    微服务应用中,springboot最常用的java框架。本文将列举springboot相应的面试知识点,来祝同学一臂之力。

    对于springboot还不熟悉的同学,可以先花费半小时时间网上随便找一个入门案例去敲一遍,或者通过下面的简单介绍先了解一下springboot的入门操作。

    想查看更多的文章请关注公众号:IT巡游屋
    在这里插入图片描述

    二、springboot入门

    springboot的学习天梯图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cucl1PT3-1603442770353)(image-20201015190232732.png)]

    2.1、springboot的快速入门

    需求:搭建SpringBoot工程,定义HelloController.hello()方法,返回”Hello SpringBoot!”。

    实现步骤

    ①创建Maven项目

    ②导入SpringBoot起步依赖

    <!--springboot工程需要继承的父工程-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.9.RELEASE</version>
        </parent>
    
        <dependencies>
            <!--web开发的起步依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    

    ③定义Controller

    @RestController
    public class HelloController {
    
        @RequestMapping("/run")
        public String hello(){
            return " run Spring Boot !";
        }
    }
    
    

    ④编写引导类

    /**
     * 引导类。 SpringBoot项目的入口
     */
    @SpringBootApplication
    public class HelloApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(HelloApplication.class,args);
        }
    }
    
    

    ⑤启动测试

    结论:基于约定大于配置的思想,springboot极大的优化了spring 的繁琐配置,让项目非常迅速的就能启动起来,同时避免了很多jar包的冲突问题。

    三、面试题

    面试题一:说说你对springboot的了解?

    SpringBoot其实就是对spring的一个扩展,可以快速让spring项目运行起来,作为开发工程师只需要把重心放到业务代码中,不需要花费过多的精力去考虑配置问题,springboot宣扬的是约定优于配置的思想,因此springboot会默认使用一些常用的配置。开发者也能自己去配置一些不常用的配置参数。使用springboot并不能去增强spring的功能,但是它却能让spring项目更快的运行起来。

    面试题二:Springboot、SpringMvc和 Spring 有什么区别?

    1、Spring

    对于spring,同学都很熟悉,我们就简单的去说,Spring作为java框架为项目开发做了强大的架构支撑。spring内部提供了很多优秀的功能,如IOC,AOP,依赖注入等。spring维护一个容器来管理全局的bean对象。
    不仅如此,spring还提供了JDBCTemplate 、SpringMVC 、SpringSecurity、Spring Test
    这些模块,大大减少了程序的开发时间,增加了开发效率。

    使用spring的IOC控制反转和DI依赖注入,来管理我们bean。也能使用AOP面向切面来增强程序功能。以上操作spring均能够以低耦合的方式进行,使用spring我们可以开发出低耦合程序。

    2、Spring MVC

    Spring MVC 是spring的一个表现层模块。spring MVC除了具有spring的特征以外还提供了很多组件,在Spring MVC中所有的请求由DisPatcherServlet统一接收,并调用不同的组件协作处理,例如处理器适配器,处理器,视图解析器等等,组件之间低耦合,我们可以自由选择使用什么组件,甚至还可以自定义开发对应的组件。毫无疑问springmvc让web开发低耦合同时自由度更高。

    3、SpringBoot

    Spring 和 SpringMVC 的问题在于需要完成大量的配置,并且导入大量的坐标。且很多坐标和配置几乎适用于每一个spring项目,但是我们不得不去千篇一律的配置它们。而且使用的时候还有可能因为坐标太多一时疏忽造成版本冲突等问题。

    spring的依赖

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    

    Spring Boot算是在Spring的基础上扩展出来的一个框架,使用springboot我们将不用再写spring的xml配置,我们甚至不需要去考虑依赖版本冲突的问题,springboot会自动集成对应的可靠的依赖版本。使用springboot可以让项目更快速的搭建起来。

    注意:Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

    springboot的web依赖

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
        <version>2.0.5.RELEASE</version>
    </dependency>
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oiLckCCu-1603442770355)(image-20201015191349395.png)]

    面试题三:什么是自动配置?

    在spring中我们要完成依赖注入可以通过@Autowired注解实现,但要求注入与被注入的对象都应该被容器所管理,才能完成依赖注入过程,如果依赖注入的双方任一不在容器中,则必然会注入失败。我们通常会在类上定义@Component等注解来将对象交给容器管理,也可以xml中配置标签完成这个过程。若是将第三方提供的类交由容器管理的话可能会更复杂一点,得根据第三方类的实现方式进行相应的xml配置。

    但对于spring boot而言,可以使用@EnableAutoConfiguration注解开启自动配置,自动配置可以让我们配置好的类,自动交由spring容器所管理。对于第三方的类也有很好的支持,要是使用者在项目中遇到需要注入例如,如果你想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖项,你就可以完美进行。

    面试题四:说说什么是Starter?

    starter作为SpringBoot的一个特色,大大提高了项目的构建效率,极大的简化了传统模式下的配置和依赖管理。

    1)之前的实现方式:

    starter出现以前,如果我想要在Spring中通过mybatis操作数据库,那我可能需要做以下操作

    • 在pom文件里引入连接池、数据库驱动包等坐标
    • 引入spring ,springmvc,mybatis框架的坐标
    • 在多个xml里配置一堆参数信息
    • 重复的调整程序,修改配置,到结果成功为止

    你要明白的是,我们每次新建一个这样的项目,以上操作都要重复做一次。可能我们在首次创建项目之时,是通过百度上搜索了一些坐标和配置,消耗了很多时间排除了很多奇怪bug之后,项目最后能正常跑通了。可能也有很多经验丰富的同学会用笔记把这些操作记录起来,包括完整的步骤或者要用到的配置和坐标,下一回再次创建这样的项目的时候,就不用再百度上耗费时间了,只用按照自己记录的笔记一步一步完成即可,对于配置文件和坐标则可以通过拷贝笔记的方式快速引入。

    之前我们就这样实现的,这里会产生几个问题:

    1. 配置过程假设太过麻烦,像这样很多步骤的操作要多出很多出问题的可能
    2. 经常性的复制粘贴,不符合DRY原则
    3. 由于配置的内容过多,我们首次实现的时候会耗费大量的时间
    1. 使用springboot后:

    我们可以通过导入starter坐标,相应的starter会将所需的jar坐标都传来依赖进来,这样就防止了我们自己去引入坐标而造成的冲突或者百度坐标版本所造成的问题。starter有很多类别,不同的starter所包含的jar包坐标也各不相同,他们内部可能实现方式也有所不同。

    不同的starter的实现方式也不同,不过都是由两部分组合而成:其一是ConfigurationProperties,其二是AutoConfiguration。在约定大于配置的大前提下,springboot会让ConfigurationProperties来记录我们的配置,且会为配置附上最常用的参数作为默认值,这样的话在我们什么都不操作默认值就起作用了,这个是非常有用的,极大的减少了开发配置。springboot会让这些配置聚集在一个配置文件中application.properties。

    spring项目的配置文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o8Zpdn6I-1603442770362)(image-20201017192050652.png)]

    springboot的配置文件:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSKu4GTJ-1603442770371)(image-20201017192201808.png)]

    关系图:

    在这里插入图片描述

    可以看出,使用springboot让我们的配置更加简洁。

    面试题五:说说常用的一些springboot Starter?

    1)spring-boot-starter-web

    包含springmvc ,嵌入 Tomcat 以及web开发所必须的全套组件

    2)mybatis-spring-boot-starter

    包含mybatis操作数据库所必须的全套组件

    3)spring-boot-starter-test

    包含测试所必须的全套组件

    4)spring-boot-starter-thymeleaf

    包含Thymeleaf视图整合的全套组件

    5)spring-boot-starter-actuator

    包含生产级监控的全套组件

    6)spring-boot-starter-security

    包含SpringSecurity 安全认证授权的全套组件

    7)spring-boot-starter-data-jpa

    包含 Hibeernate和 Spring Data JPA的全套组件

    面试题六:说说springboot 的核心注解?

    @SpringBootApplication是启动类上的核心注解,主要包含了下面三个注解

    1)@SpringBootConfiguration:集成了 @Configuration 处理配置文件

    2)@EnableAutoConfiguration:springboot的自动配置开启

    3)@ComponentScan:扫描spring组件

    展开全文
  • 主要为大家详细介绍了10道springboot常见面试题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • SpringBoot常见面试题

    万次阅读 2019-06-19 15:30:39
    1、什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven配置 自动配置...

    1、什么是springboot 
    用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 
    创建独立的spring引用程序 main方法运行 
    嵌入的Tomcat 无需部署war文件 
    简化maven配置 
    自动配置spring添加对应功能starter自动化配置 
    答:spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

    2、Spring Boot有哪些优点? 
    答:-快速创建独立运行的spring项目与主流框架集成 
    -使用嵌入式的servlet容器,应用无需打包成war包 
    -starters自动依赖与版本控制 
    -大量的自动配置,简化开发,也可修改默认值 
    -准生产环境的运行应用监控 
    -与云计算的天然集成

    3、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 
    这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 
    Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 
    开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 
    这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。 

    org.springframework.boot 
    spring-boot-devtools 
    true 
    4、Spring Boot中的监视器是什么? 
    Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 
    有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

    5、什么是YAML? 
    YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 
    与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

    6、如何集成Spring Boot和ActiveMQ? 
    对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。 它只需要很少的配置,并且不需要样板代码。

    7、springboot常用的starter有哪些 
    spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持 
    spring-boot-starter-data-jpa 数据库支持 
    spring-boot-starter-data-redis redis数据库支持 
    spring-boot-starter-data-solr solr支持 
    mybatis-spring-boot-starter 第三方的mybatis集成starter

    8、springboot自动配置的原理 
    在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 
    会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean

    9、springboot读取配置文件的方式 
    springboot默认读取配置文件为application.properties或者是application.yml

    10、springboot集成mybatis的过程 
    添加mybatis的starter maven依赖 

    org.mybatis.spring.boot 
    mybatis-spring-boot-starter 
    1.2.0 

    在mybatis的接口中 添加@Mapper注解 
    在application.yml配置数据源信息

     

    1.常见的starter会包几个方面的内容。分别是什么。

    常见的starter会包括下面四个方面的内容 
    自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。 
    spring.factories,非常重要,指导Spring Boot找到指定的自动配置文件。 
    endpoint:可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)。 
    health indicator:该starter提供的服务的健康指标。
    两个需要注意的点: 
    1. @ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,【用户自己手动创建的bean优先】。
     2. Spring Boot Starter找到自动配置文件(xxxxAutoConfiguration之类的文件)的方式有两种:spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置; 
    @EnableXxxxx:有时需要由starter的用户触发*查找自动配置文件的过程

    2.总结Spring Boot Starter的工作原理

    Spring Boot Starter的工作原理如下: 
    1. Spring Boot 在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR 
    2. 根据spring.factories配置加载AutoConfigure类 
    3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context 

    3.谈谈你对Spring Boot的认识。

    spring Boot是一个开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法。此框架的神奇之处在于@EnableAutoConfiguration注解,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。 
    1. @Enable*注释 @Enable*注释并不是新发明的注释,早在Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。 很多Spring开发者都知道@EnableTransactionManagement注释,它能够声明事务管理;@EnableWebMvc注释,它能启用Spring MVC;以及@EnableScheduling注释,它可以初始化一个调度器。 
     
    2. 属性映射 下面看MongoProperties类,它是一个Spring Boot属性映射的例子: @ConfigurationProperties(prefix = "spring.data.mongodb") public class MongoProperties { private String host; private int port = DBPort.PORT; private String uri = "mongodb://localhost/test"; private String database; // ... getters/ setters omitted } @ConfigurationProperties注释将POJO关联到指定前缀的每一个属性。例如,spring.data.mongodb.port属性将映射到这个类的端口属性。 强烈建议Spring Boot开发者使用这种方式来删除与配置属性相关的瓶颈代码。 
     
    3.@Conditional注释 Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。 在Spring Boot的org.springframework.boot.autoconfigure.condition包中说明了使用@Conditional注释能给我们带来什么,下面对这些注释做一个概述: @ConditionalOnBean @ConditionalOnClass @ConditionalOnExpression @ConditionalOnMissingBean @ConditionalOnMissingClass @ConditionalOnNotWebApplication @ConditionalOnResource @ConditionalOnWebApplication 
     
    4.应用程序上下文初始化器 spring.factories还提供了第二种可能性,即定义应用程序的初始化。这使得我们可以在应用程序载入前操纵Spring的应用程序上下文ApplicationContext。 特别是,可以在上下文创建监听器,使用ConfigurableApplicationContext类的addApplicationListener()方法。 AutoConfigurationReportLoggingInitializer监听到系统事件时,比如上下文刷新或应用程序启动故障之类的事件,Spring Boot可以执行一些工作。这有助于我们以调试模式启动应用程序时创建自动配置的报告。 要以调试模式启动应用程序,可以使用-Ddebug标识,或者在application.properties文件这添加属性debug= true。

    4.自定义springboot-starter注意事项

    1. springboot默认scan的包名是其main类所在的包名。如果引入的starter包名不一样,需要自己添加scan。 @ComponentScan(basePackages = {"com.xixicat.demo","com.xixicat.sms"}) 
    2. 对于starter中有feign的,需要额外指定 @EnableFeignClients(basePackages = {"com.xixicat.sms"})
    3. 对于exclude一些autoConfig @EnableAutoConfiguration(exclude ={MetricFilterAutoConfiguration.class})

    原文:https://yq.aliyun.com/ziliao/316498

    展开全文
  • SpringBoot常见面试题总结 https://www.jianshu.com/p/63ad69c480fe/ 简书大佬

    SpringBoot常见面试题总结
    https://www.jianshu.com/p/63ad69c480fe/
    简书大佬

    展开全文
  • 来源:阿凯的帽子反戴原:blog.csdn.net/Kevin_Gu6/article/details/88547424今天跟大家分享下SpringBoot 常见面试题的知识。1什么是...


    来源:阿凯的帽子反戴

    原:blog.csdn.net/Kevin_Gu6/article/details/88547424

    今天跟大家分享下SpringBoot 常见面试题的知识。

    什么是springboot ?

    用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)

    创建独立的spring引用程序 main方法运行 

    嵌入的Tomcat 无需部署war文件 

    简化maven配置 

    自动配置spring添加对应功能starter自动化配置 

    答:spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

    Springboot 有哪些优点?

    -快速创建独立运行的spring项目与主流框架集成 

    -使用嵌入式的servlet容器,应用无需打包成war包

    -starters自动依赖与版本控制 

    -大量的自动配置,简化开发,也可修改默认值 

    -准生产环境的运行应用监控 

    -与云计算的天然集成

    如何重新加载Spring Boot上的更改,而无需重新启动服务器?

    这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 

    Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 

    开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 

    这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。 

    org.springframework.boot 

    spring-boot-devtools 

    true 

    4 Spring Boot、Spring MVC 和 Spring 有什么区别?

    1、Spring

    Spring最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。

    当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。

    2、Spring MVC

    Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。

    3、SpringBoot

    Spring 和 SpringMVC 的问题在于需要配置大量的参数。

    Spring Boot 通过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,Spring Boot 提供了一些非功能性特征。

    5 什么是自动配置?

    Spring 和 SpringMVC 的问题在于需要配置大量的参数。

    我们能否带来更多的智能?当一个 MVC JAR 添加到应用程序中的时候,我们能否自动配置一些 beans?

    Spring 查看(CLASSPATH 上可用的框架)已存在的应用程序的配置。在此基础上,Spring Boot 提供了配置应用程序和框架所需要的基本配置。这就是自动配置。

    6 什么是 Spring Boot Stater ?

    启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的 Spring 和相关技术,而不需要依赖描述符的通过示例代码搜索和复制黏贴的负载。

    例如,如果你想使用 Sping 和 JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖项,你就可以完美进行。 

    7 能否举一个例子来解释更多 Staters 的内容?

    让我们来思考一个 Stater 的例子 -Spring Boot Stater Web。

    如果你想开发一个 web 应用程序或者是公开 REST 服务的应用程序。Spring Boot Start Web 是首选。让我们使用 Spring Initializr 创建一个 Spring Boot Start Web 的快速项目。

    Spring Boot Start Web 的依赖项

    下面的截图是添加进我们应用程序的不同的依赖项

    依赖项可以被分为:

    • Spring - core,beans,context,aop

    • Web MVC - (Spring MVC)

    • Jackson - for JSON Binding

    • Validation - Hibernate,Validation API

    • Enbedded Servlet Container - Tomcat

    • Logging - logback,slf4j

    任何经典的 Web 应用程序都会使用所有这些依赖项。Spring Boot Starter Web 预先打包了这些依赖项。

    作为一个开发者,我不需要再担心这些依赖项和它们的兼容版本。

    Spring Boot 还提供了其它的哪些 Starter Project Options?

    Spring Boot 也提供了其它的启动器项目包括,包括用于开发特定类型应用程序的典型依赖项。

    • spring-boot-starter-web-services - SOAP Web Services;

    • spring-boot-starter-web - Web 和 RESTful 应用程序;

    • spring-boot-starter-test - 单元测试和集成测试;

    • spring-boot-starter-jdbc - 传统的 JDBC;

    • spring-boot-starter-hateoas - 为服务添加 HATEOAS 功能;

    • spring-boot-starter-security - 使用 SpringSecurity 进行身份验证和授权;

    • spring-boot-starter-data-jpa - 带有 Hibeernate 的 Spring Data JPA;

    • spring-boot-starter-data-rest - 使用 Spring Data REST 公布简单的 REST 服务;

    创建一个 Spring Boot Project 的最简单的方法是什么?

    Spring Initializr是启动 Spring Boot Projects 的一个很好的工具。

    就像上图中所展示的一样,我们需要做一下几步:

    1、登录 Spring Initializr,按照以下方式进行选择:

    2、选择 com.in28minutes.springboot 为组

    3、选择 studet-services 为组件

    4、选择下面的依赖项

            Web

            Actuator

            DevTools

    5、点击生 GenerateProject

    6、将项目导入 Eclipse。文件 - 导入 - 现有的 Maven 项目

    10 Spring Initializr 是创建 Spring Boot Projects 的唯一方法吗?

    不是的。

    Spring Initiatlizr 让创建 Spring Boot 项目变的很容易,但是,你也可以通过设置一个 maven 项目并添加正确的依赖项来开始一个项目。

    在我们的 Spring 课程中,我们使用两种方法来创建项目。

    第一种方法是 start.spring.io 。

    另外一种方法是在项目的标题为“Basic Web Application”处进行手动设置。

    手动设置一个 maven 项目

    这里有几个重要的步骤:

    1、在 Eclipse 中,使用文件 - 新建 Maven 项目来创建一个新项目

    2、添加依赖项。

    3、添加 maven 插件。

    4、添加 Spring Boot 应用程序类。

    到这里,准备工作已经做好!

    11 为什么我们需要 spring-boot-maven-plugin?

    spring-boot-maven-plugin 提供了一些像 jar 一样打包或者运行应用程序的命令。

    1、spring-boot:run 运行你的 SpringBooty 应用程序。

    2、spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行

    3、spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应用程序的生命周期(也可以说是为了集成测试)。

    4、spring-boot:build-info 生成执行器可以使用的构造信息。

    12 如何使用 SpringBoot 自动重装我的应用程序?

    使用 Spring Boot 开发工具。

    把 Spring Boot 开发工具添加进入你的项目是简单的。

    把下面的依赖项添加至你的 Spring Boot Project pom.xml 中

    重启应用程序,然后就可以了。

    同样的,如果你想自动装载页面,有可以看看 FiveReload

    http://www.logicbig.com/tutorials/spring-framework/spring-boot/boot-live-reload/.
    

    在我测试的时候,发现了 LiveReload 漏洞,如果你测试时也发现了,请一定要告诉我们。

    13 Spring Boot中的监视器是什么?

    Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 

    有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

    14 什么是YAML? 

    YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 

    与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

    15 springboot自动配置的原理 

    在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 

    会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean

    16 springboot读取配置文件的方式 

    springboot默认读取配置文件为application.properties或者是application.yml

    17 springboot集成mybatis的过程 

    添加mybatis的starter maven依赖 

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    
    

    在mybatis的接口中 添加@Mapper注解 

    在application.yml配置数据源信息

    18 什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

    思考一下在你的虚拟机上部署应用程序需要些什么。

    第一步:安装 Java

    第二:安装 Web 或者是应用程序的服务器(Tomat/Wbesphere/Weblogic 等等)

    第三:部署应用程序 war 包

    如果我们想简化这些步骤,应该如何做呢?

    让我们来思考如何使服务器成为应用程序的一部分?

    你只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了,

    这个想法是嵌入式服务器的起源。

    当我们创建一个可以部署的应用程序的时候,我们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。

    例如,对于一个 Spring Boot 应用程序来说,你可以生成一个包含 Embedded Tomcat 的应用程序 jar。你就可以想运行正常 Java 应用程序一样来运行 web 应用程序了。

    嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。

    19 如何在 Spring Boot 中添加通用的 JS 代码?

    在源文件夹下,创建一个名为 static 的文件夹。然后,你可以把你的静态的内容放在这里面。

    例如,myapp.js 的路径是 resources\static\js\myapp.js

    你可以参考它在 jsp 中的使用方法:

    错误:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.

    该如何来修复这个错误呢?

    两种方法:

    方法 1:关闭安全验证

    application.properties

    management.security.enabled:FALSE
    

    方法二:在日志中搜索密码并传递至请求标头中

    20 什么是 Spring Data?

    来自://projects.spring.io/spring- data/

    Spring Data 的使命是在保证底层数据存储特殊性的前提下,为数据访问提供一个熟悉的,一致性的,基于 Spring 的编程模型。这使得使用数据访问技术,关系数据库和非关系数据库,map-reduce 框架以及基于云的数据服务变得很容易。

    为了让它更简单一些,Spring Data 提供了不受底层数据源限制的 Abstractions 接口。

    下面来举一个例子:

    你可以定义一简单的库,用来插入,更新,删除和检索代办事项,而不需要编写大量的代码。

    21 什么是 Spring Data REST?

    Spring Data TEST 可以用来发布关于 Spring 数据库的 HATEOAS RESTful 资源。

    下面是一个使用 JPA 的例子:

    不需要写太多代码,我们可以发布关于 Spring 数据库的 RESTful API。

    下面展示的是一些关于 TEST 服务器的例子

    POST:URL:http://localhost:8080/todosUse Header:Content-Type:Type:application/jsonRequest Content
    

    代码如下:

    响应内容:

    响应包含新创建资源的 href。

    22 path=”users”, collectionResourceRel=”users” 如何与 Spring Data Rest 一起使用?

    path- 这个资源要导出的路径段。

    collectionResourceRel- 生成指向集合资源的链接时使用的 rel 值。在生成 HATEOAS 链接时使用。

    23 当 Spring Boot 应用程序作为 Java 应用程序运行时,后台会发生什么?

    如果你使用 Eclipse IDE,Eclipse maven 插件确保依赖项或者类文件的改变一经添加,就会被编译并在目标文件中准备好!在这之后,就和其它的 Java 应用程序一样了。

    当你启动 java 应用程序的时候,spring boot 自动配置文件就会魔法般的启用了。

    当 Spring Boot 应用程序检测到你正在开发一个 web 应用程序的时候,它就会启动 tomcat。

    24 我们能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?

    在 spring-boot-starter-web 移除现有的依赖项,并把下面这些添加进去。

    25 如何使用 Spring Boot 生成一个 WAR 文件?

    推荐阅读:

    https://spring.io/guides/gs/convert-jar-to-war/

    下面有 spring 说明文档直接的链接地址:

    https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging
    

    26 如何使用 Spring Boot 部署到不同的服务器?

    你需要做下面两个步骤:

    在一个项目中生成一个 war 文件。

    将它部署到你最喜欢的服务器(websphere 或者 Weblogic 或者 Tomcat and so on)。

    第一步:这本入门指南应该有所帮助:

    https://spring.io/guides/gs/convert-jar-to-war/

    第二步:取决于你的服务器。

    27 RequestMapping 和 GetMapping 的不同之处在哪里?

    RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高清晰度。

    28 为什么我们不建议在实际的应用程序中使用 Spring Data Rest?

    我们认为 Spring Data Rest 很适合快速原型制造!在大型应用程序中使用需要谨慎。

    通过 Spring Data REST 你可以把你的数据实体作为 RESTful 服务直接发布。

    当你设计 RESTful 服务器的时候,最佳实践表明,你的接口应该考虑到两件重要的事情:

    你的模型范围。

    你的客户。

    通过 With Spring Data REST,你不需要再考虑这两个方面,只需要作为 TEST 服务发布实体。

    这就是为什么我们建议使用 Spring Data Rest 在快速原型构造上面,或者作为项目的初始解决方法。对于完整演变项目来说,这并不是一个好的注意。

    29 在 Spring Initializer 中,如何改变一个项目的包名字?

    好消息是你可以定制它。点击链接“转到完整版本”。你可以配置你想要修改的包名称! 

    30 JPA 和 Hibernate 有哪些区别?

    简而言之

    JPA 是一个规范或者接口

    Hibernate 是 JPA 的一个实现

    当我们使用 JPA 的时候,我们使用 javax.persistence 包中的注释和接口时,不需要使用 hibernate 的导入包。

    我们建议使用 JPA 注释,因为哦我们没有将其绑定到 Hibernate 作为实现。后来(我知道 - 小于百分之一的几率),我们可以使用另一种 JPA 实现。

    31 使用 Spring Boot 启动连接到内存数据库 H2 的 JPA 应用程序需要哪些依赖项?

    在 Spring Boot 项目中,当你确保下面的依赖项都在类路里面的时候,你可以加载 H2 控制台。

    web 启动器

    h2

    jpa 数据启动器

    其它的依赖项在下面:

    需要注意的一些地方:

    一个内部数据内存只在应用程序执行期间存在。这是学习框架的有效方式。

    这不是你希望的真是世界应用程序的方式。

    在问题“如何连接一个外部数据库?”中,我们解释了如何连接一个你所选择的数据库。

    32 如何不通过任何配置来选择 Hibernate 作为 JPA 的默认实现?

    因为 Spring Boot 是自动配置的。

    下面是我们添加的依赖项:

    spring-boot-stater-data-jpa 对于 Hibernate 和 JPA 有过渡依赖性。

    当 Spring Boot 在类路径中检测到 Hibernate 中,将会自动配置它为默认的 JPA 实现。 

    33 我们如何连接一个像 MySQL 或者Orcale 一样的外部数据库?

    让我们以 MySQL 为例来思考这个问题:

    第一步 - 把 mysql 连接器的依赖项添加至 pom.xml

    第二步 - 从 pom.xml 中移除 H2 的依赖项

    或者至少把它作为测试的范围。

    第三步 - 安装你的 MySQL 数据库

    更多的来看看这里 -https://github.com/in28minutes/jpa-with-hibernate#installing-and-setting-up-mysql

    第四步 - 配置你的 MySQL 数据库连接

    配置 application.properties

    spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://localhost:3306/todo_example spring.datasource.username=todouser spring.datasource.password=YOUR_PASSWORD
    

    第五步 - 重新启动,你就准备好了!

    就是这么简单!

    34 你能否举一个以 ReadOnly 为事务管理的例子?

    当你从数据库读取内容的时候,你想把事物中的用户描述或者是其它描述设置为只读模式,以便于 Hebernate 不需要再次检查实体的变化。这是非常高效的。

    35 Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

    启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:

    @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

    @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: 

    @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

    @ComponentScan:Spring组件扫描。

    36 开启 Spring Boot 特性有哪几种方式?

    1)继承spring-boot-starter-parent项目

    2)导入spring-boot-dependencies项目依赖

    37 Spring Boot 需要独立的容器运行吗?

    可以不需要,内置了 Tomcat/ Jetty 等容器。

    38 运行 Spring Boot 有哪几种方式?

    1)打包用命令或者放到容器中运行

    2)用 Maven/ Gradle 插件运行

    3)直接执行 main 方法运行

    39 你如何理解 Spring Boot 中的 Starters?

    Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。

    40 Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

    Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架.

    41 SpringBoot 实现热部署有哪几种方式?

    主要有两种方式:

      1、Spring Loaded

      2、Spring-boot-devtools  

    参考文献:https://blog.csdn.net/Dome_/article/details/90339363

    关注程序员闪充宝后台回复“666”和“111”免费领取46阶段以及实战java视频资料,回复“2020”领取java最新面试资料
    
    点在看
    
    展开全文
  • 前不久已经总结了一篇关于SpringBoot面试题,文章地址:【https://blog.csdn.net/Weixiaohuai/article/details/105621247】,本文将继续总结一些常见SpringBoot面试题。 二、面试题 【a】SpringBoot核心功能有...
  • 1. SpringBoot是什么 是Spring的子项目,主要简化Spring开发难度,去掉了繁重配置,提供各种启动器,可以让程序员很快上手,节省开发时间. 2. SpringBoot的优点 独立运行 简化配置(自动配置) 无代码配置,无xml配置 应用...
  • 下面一起来看看springboot常见面试题以及面试题答案整理吧。一、面试题面试题1:Spring Boot优点有哪些?面试题答案:和云计算的天然集成;准生产环境的运行应用监控 ;使用嵌入式的servlet容器,应用不需要打包成war...
  • 3、Spring 和 SpringBoot 有什么不同? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在...
  • 本文将总结一些现在非常流行的开箱即用框架SpringBoot相关的面试题。 二、面试题 【1】什么是SpringBoot? Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,...
  • 目录常见问题分析什么是 Spring Boot?Spring Boot 有哪些优点?SpringBoot中常用的注解有哪些?配置SpringBoot相关什么是 JavaConfig?Spring Boot 自动配置原理是什么?你如何理解 Spring Boot 配置加载顺序?什么...
  • springBoot、springMVC和spring有什么区别 spring spring最重要的特征是依赖注入。所有SpringModules不是依赖注入就是IOC控制反转 当我们恰当的使用DI或者是IOC的时候,我们可以开发松耦合应用.松耦合应用的单元测试...
  • SpringBoot 和spring 、springMVC的区别 Spring它的主要特征是依赖注入,它有两大核心主要是IOC和AOP。 IOC : 应用程序对象的创建,配置,维护,依赖交给了SpringIOC容器统一进行管理,从而实现松耦合。 AOP : 即...
  • 上次老师跟大家分享了Spring 常见面试题的知识,今天跟大家分享下SpringBoot 常见面试题的知识。 1 什么是springboot ? 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,100
精华内容 3,640
关键字:

springboot常见面试题

spring 订阅