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

相关推荐
bug菌21 分钟前
Java GUI编程进阶:多线程与并发处理的实战指南
java·后端·java ee
夜月行者2 小时前
如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
java·后端·ssm
Yvemil72 小时前
RabbitMQ 入门到精通指南
开发语言·后端·ruby
sdg_advance2 小时前
Spring Cloud之OpenFeign的具体实践
后端·spring cloud·openfeign
代码在改了2 小时前
springboot厨房达人美食分享平台(源码+文档+调试+答疑)
java·spring boot
猿java3 小时前
使用 Kafka面临的挑战
java·后端·kafka
碳苯3 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
kylinxjd3 小时前
spring boot发送邮件
java·spring boot·后端·发送email邮件
杰哥在此3 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
杨荧3 小时前
【JAVA开源】基于Vue和SpringBoot的旅游管理系统
java·vue.js·spring boot·spring cloud·开源·旅游