SpringBoot的总结(面试必备技能)

1. 什么是SpringBoot?

  1. .用来简化Spring应用的初始化搭建和开发过程,使用特定的方式进行配置;

  2. .创建独立的Spring应用程序,main方法运行;

  3. .嵌入了tomcat 无需部署war文件;

  4. .简化maven配置;

  5. .自动配置Spring添加对应的功能starter自动化配置。

2. Spring、SpringMVC、SpringBoot有什么区别?

  1. .Spring最重要的特征就是依赖注入,当我们恰当的使用DI或IOC的时候,可以开发松耦合应用;

  2. .SpringMvc提供了一套分离式的方法来开发web应用,通过DispacherServelet、ModelAndView、Resolver等一些简单的概念,开发web应用程序将变得更加简单;

  3. .Spring和SpringMvc的问题在于需要进行大量的配置,SpringBoot通过自动配置和一个启动的项来解决这些问题。

3. SpringBoot自动配置的原理是什么?

在SpingBoot的启动类的上,添加@SpringBootApplication或者@EnableConfiguration会自动去maven中读取每个starter的Spring.factories文件,该文件配置了所有需要被创建的Spring容器中的bean。

4. 运行SpringBoot项目有几种方式?

  1. .打包命令或者放入容器中运行;

  2. .使用maven或者Gradle插件运行;

  3. .直接执行main方法运行。

5. SpringBoot打成的jar和普通的jar有什么区别?

SpringBoot项目最终打成的jar,是可运行的jar,通过 java -jar xxx.jar命令来运行,这种jar不可以作为普通jar被其他项目依赖,即使依赖了也无法使用其中的类;

SpringBoot的jar不可以被其他项目依赖,主要是因为它和普通jar的结构不同,普通jar解压后直接是包名,包里就是我们需要的代码。SpringBoot的jar解压之后,在\BOOT-INF\classes\下才是代码,因此无法被直接引用。如果非要引用,可以在pom.xml中进行配置,打包成两个jar,一个可执行,一个可被引用。

6. SpringBoot的常用注解有哪些?

1).@SpringBootApplication

@SpringBootApplication是一个复合型注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan三个注解;

**@SpringBootConfiguration:**标注当前类是配置类,这个注解继承自Configuration,并且会将当前类声明的一个或多个以@Bean标注的方法纳入到Spring容器中,并且实例名就是方法名。

**@EnableAutoConfiguration:**是自动配置的注解,这个注解会根据我们配置的组件jar来完成一些默认配置,我们做微服时会添加spring-boot-starter-web这个组件jar的pom依赖,这样配置会默认配置springmvc 和tomcat。

**@ComponentScan:**扫描当前包及子包下被@Component、@Controller、@Service、@Repository注解标记的类纳入到Spring容器中进行管理。

2).其他注解

@ServletComponentScan:Servlet、Filter、listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,这样通过注解Servlet,拦截器和监听器的功能而无需其他配置。

**@MapperScan:**spring-boot支持MyBatis的一个注解,通过此注解指定MyBatis接口类的路径,即可完成对MyBatis接口的扫描。

它和@mapper注解是一样的作用,不同的地方是扫描入口不一样。@mapper需要加在每一个mapper接口类上面。所以大多数情况下,都是在规划好工程目录之后,通过@MapperScan注解配置路径完成mapper接口的注入。

添加mybatis相应组建依赖之后。就可以使用该注解。

@RestController:@Controller和@ReponseBody组合,这样更加的简洁。

7. @Configuration 和 @Component的区别

@Component注解的范围最广,所有类都可以注解,但是@Configuration一般注解在这样的类上:这个类里边有@Value注解的成员变量和@Bean注解的方法,就是一个配置类。

8. SpringBoot中的"约定优于配置"的具体产品体现在哪?

Spring Boot Strater、Spring Boot Jpa都是"约定优于配置"的体现。都是通过"约定优于配置"的思想来设计的,Spring Boot Starter在启动的过程中会根据约定的信息对资源进行初始化,Spring Boot Jpa通过约定的方式来自动生成Sql,避免大量无效代码的编写。

9. Spring Boot Starter的工作原理

SpringBoot在启动时会做这几件事:

①SpringBoot在启动时回去依赖的Starter包中寻找

Rseource/META-INF/spring.factories,然后根据文件中的Jar包去扫描项目所依赖的Jar包;

②根据spring.factories配置加载AutoConfigure类;

③根据@Conditional注解的条件,进行自动配置并将Bean注入Spring Contex;

总结:SpringBoot在启动的过程中,会按照约定去读取Spring Boot Starter的配置信息,然后再根据配置信息对资源进行初始化,并注入到Spring容器中。这样SpringBoot启动完毕后,就已经准备好了一切资源,在使用过程中直接注入对应Bean资源即可。

相关推荐
飞的肖5 分钟前
前端使用 Element Plus架构vue3.0实现图片拖拉拽,后等比压缩,上传到Spring Boot后端
前端·spring boot·架构
Q_19284999067 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
良许Linux12 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
ThisIsClark16 分钟前
【后端面试总结】MySQL主从复制逻辑的技术介绍
mysql·面试·职场和发展
求知若饥24 分钟前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs
gb42152871 小时前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶1 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
颜淡慕潇2 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
LCG元8 小时前
【面试问题】JIT 是什么?和 JVM 什么关系?
面试·职场和发展