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

发布时间:2024年01月19日

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

文章来源:https://blog.csdn.net/lichongxyz/article/details/135696855
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。