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资源即可。

相关推荐
李昊哲小课1 小时前
Spring Boot SSE 实时推送教程
spring boot·websocket·flux·sseemitter
狗头大军之江苏分军1 小时前
《潮水漫过十七岁》开学了
后端
苏三说技术2 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong2 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno7042 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc2 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
aramae3 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
kyriewen4 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
行百里er4 小时前
Spring Insight 里如何把 Span 收成一条链路
spring boot·spring cloud·监控
IT_陈寒4 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端