首页 > 编程语言 > 详细

SpringBoot 面试题

时间:2021-05-29 17:18:06      阅读:15      评论:0      收藏:0      [点我收藏+]

Created By Cofson in 2021-05-29 10:33:36

SpringBoot简介

Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

Spring Boot 主要有如下优点:独立运行和简化配置

  • 容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。
  • 开箱即用,远离繁琐的配置。
  • 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
  • 没有代码生成,也不需要XML配置。
  • 避免大量的 Maven 导入和各种版本冲突

SpringBoot核心注解

@SpringBootApplication是启动类上的最重要的一个注解,我们点进去可以看到,她其实是三个注解的组合,也就是说使用者一个注解的作用相当于三个注解。

技术分享图片

1、@SpringBootConfiguration

@SpringBootConfiguration 其实就是对原 @Configuration 注解的简单封装。

技术分享图片

@Configuration是Spring 3.0时添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。@Configuration还有下面几个相关的注解,也可很重要。

  • @Bean
    用来代替 XML 配置文件里面的bean配置

  • @ImportResource
    如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用

  • @Import
    用来引入额外的一个或者多个 @Configuration 修饰的配置文件类

2、@ComponentScan

@ComponentScan主要用来开启组件扫描,可以自动扫描指定包路径下的@Component注解类并将bean实例注册到context中。

技术分享图片

@ComponentScan是Spring 3.1时添加的一个注解,用来代替配置文件中的 component-scan 配置,并且可重复注解,即可以配置多个,用来配置注册不同的子包

3、@EnableAutoConfiguration

@EnableAutoConfiguration主要用来提供自动装配,是这三个注解中最重要的一个注解。她是Spring Boot新添加的注解,提供了强大的自动依赖功能,是SpringBoot这么方便的大功臣。

自动装配原理

@EnableAutoConfiguration注解的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:

  • 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;
  • 去重,并将exclude和excludeName属性携带的类排除;
  • 过滤,将满足条件(@Conditional)的自动配置类返回。

参考阅读
SpringBoot之@EnableAutoConfiguration注解
代码分析@EnableAutoConfiguration注解

SpringBoot starter 作用在什么地方

依赖管理是所有项目中至关重要的一部分。当一个项目变得相当复杂,管理依赖会成为一个噩梦,因为当中涉及太多 artifacts 了。这时候 SpringBoot starter 就派上用处了。每一个 stater 都在扮演着提供我们所需的 Spring 特性的一站式商店角色。其他所需的依赖以一致的方式注入并且被管理。所有的 starter 都归于 org.springframework.boot 组中,并且它们都以由 spring-boot-starter- 开头取名。

这种命名方式使得我们更容易找到 starter 依赖,特别是当我们使用那些支持通过名字查找依赖的 IDE 当中

目前,已经有超过50个 starter了,其中最常用的是

  • spring-boot-starter:核心 starter,包括自动化配置支持,日志以及 YAML

  • spring-boot-starter-aop:Spring AOP 和 AspectJ 相关的切面编程 starter

  • spring-boot-starter-data-jpa:使用 Hibernate Spring Data JPA 的 starter

  • spring-boot-starter-jdbc:使用 HikariCP 连接池 JDBC 的 starter

  • spring-boot-starter-security:使用 Spring Security 的 starter

  • spring-boot-starter-test:SpringBoot 测试相关的 starter

  • spring-boot-starter-web:构建 restful、springMVC 的 web应用程序的 starter

SpringBoot 面试题

原文:https://www.cnblogs.com/cofson/p/14825260.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!