SpringBoot-面试核心概念

2023-10-17 10:39:51 浏览数 (1)

引言:

SpringBoot是企业级开发的整体整合解决方案,在现在企业项目开发中使用非常普遍。因此,SpringBoot已经成为Java 序员面试的必备知识点

1.什么是SpringBoot,Spring,SpringMVC以及它们的区别?

要点:

Spring是一个轻量级的企业级应用的容器,它最重要的特征是依赖注入和AOP。

SpringMVC是一个实现了MVC设计模式的框架,使用分离的方式开发Web应用。简化了Web应用程序的开发。

Spring和SpringMVC都需要大量的配置,Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,删去了繁重的配置,提供了各种启动器,使开发者能快速上手,搭建企业级应用。

 2.SpringBoot的核心注解有哪些?

要点:

启动类注解@SpringBootApplication,它包含三个注解:

   (1)@SpringBootConfiguration:

   (2)@Configuration 注解,实现配置文件的功能。

   (3)@EnableAutoConfiguration:打开自动配置的功能

   (4)@ComponentScan:Spring组件扫描

3.SpringBoot的Starter有哪些?

要点:

SpringBoot中的Starter相当于模块,它将模块所需的依赖整合起来并对模块内的Bean根据条件进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的包。一站式的集成Spring及其他技术。

spring-boot-starter-web  SpringMVC 内嵌的tomcat

spring-boot-starter-data-redis  整合Redis

spring-boot-starter-data-jpa 整合 Spring JPA Hibernate

spring-boot-starter-test    集成测试

spring-boot-starter-security 整合SpringSecurity

mybatis-spring-boot-starter  整合MyBatis

4.SpringBoot的配置文件有哪些?

要点:

SpringBoot默认读取配置文件为application.properties或者是application.yml或者application.yaml(yaml/yml只是扩展名不同而已)。

yml/yaml文件是一种树形结构,可读性强,支持多种(python,go等)语言,支持中文,不支持使用@PropertySource("")注解。properties文件是一种key/value的形式,中文内容只能用unicode编码。相同的目录下有三个配置文件时,优先级properties>yaml>yml

5.SpringBoot的优点?

要点:

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

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

(3)starters自动依赖与版本控制

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

6.SpringBoot的运行方式

要点:

(1)直接运行Main方法启动

(2)使用spring-boot-maven-plugin插件启动

(3)项目打包放到容器中运行

7.什么是JavaConfig

要点:

      传统的Spring一般都是基本xml配置的,Spring3.0新增了许多java config的注解。Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法,即基于java配置的spring。常见注解有:

@Configuration 表示配置类

@Bean   等价于 <bean id="obj" class="..." />

@EnableWebMvc  等价于  <mvc:annotation-driven>

@ImportResource  等价于 <import resource="beans.xml">

@PropertySource    读取properties文件

JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。提供了一种类型安全的方法来配置Spring容器。可以按类型而不是按名称检索bean,而不需要任何强制转换。

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

要点:

实际开发过程中,每次修改代码就得将项目重启,重新部署,这个过程需要花费大量的时间成本。为了提高重启效率,提出了热部署的概念。

    热部署的基本原理使用了两个ClassLoader(类加载器),一个ClassLoader加载那些不会改变的类(例如第三方jar包),另一个ClassLoader加载会改变的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对少,所以实现了较快的重启时间。主要有两种实现方式:

(1)Spring Loaded:

Spring Loaded是一个用于在JVM运行时重新加载类文件更改的JVM代理,Spring Loaded允许你动态的新增、修改、删除某个方法、字段、构造方法,同样可以修改作用在类、方法等上的注解。

代码语言:javascript复制
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <dependencies>
        <dependency>
           <groupId>org.springframework</groupId>                                                                                                                                                                                                                                                                                                           
           <artifactId>springloaded</artifactId>
           <version>1.2.6.RELEASE</version>        
       </dependency>
    </dependencies>
</plugin>

(2)Spring-boot-devtools
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
9.SpringBoot自动配置的原理

要点:

     在SpringBoot的应用程序中,所有的运行都起源于@SpringBootApplication注解,它是一个组合注解,等同于以下三个注解:

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

@EnableAutoConfiguration是关键(启用自动配置),内部实际上就去加载META-INF/spring.factories文件的信息,然后筛选出以EnableAutoConfiguration为key的数据,加载到IOC容器中,实现自动配置的功能。

10.Spring Boot 支持的日志框架有哪些?

要点:

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

0 人点赞