SpringBoot面试题

SpringBoot 面试题

核心配置文件

application

应用场景:

  • SpringBoot项目的自动化配置

bootstrap

bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。

特点:

  1. 由父 ApplicationContext 加载
  2. bootstrap 里面的属性不能被覆盖
  3. 从额外的资源来加载配置

应用场景:

  • 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
  • 一些固定的不能被覆盖的属性;
  • 一些加密/解密的场景;

配置文件格式

两种:.properties.yml
注意:
.yml 格式不支持 @PropertySource 注解导入配置;但是可以使用 Environment

public class DruidConfig {
    @Autowired
    private Environment env;
    @Bean
    public ServletRegistrationBean<Servlet> druidServlet() {
        // 获取 application.yml 中的 配置
        String loginUsername = env.getProperty("womine.druid.loginUsername");
    }
}

核心注解

@SpringBootApplication

@SpringBootApplication 包含三个注解:

  • @SpringBootConfiguration : 组合了 @Configuration 注解,实现配置文件的功能;
  • @EnableAutoConfiguration : 打开自动配置的功能;
  • @ComponentScan:Spring组件扫描;

是否需要独立容器

答:不需要,内置 tomcat/jetty 。

Spring Boot Starters启动器

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。

分类

应用类启动器:

  • spring-boot-starter: 包含自动配置、日志、YAML的支持。
  • spring-boot-starter-web: 使用Spring MVC构建web 工程,包含restful,默认使用Tomcat容器。
    生产起动器:
  • spring-boot-starter-actuator: 提供生产环境特性,能监控管理应用。
    技术类启动器:
  • spring-boot-starter-json: 提供对JSON的读写支持。
  • spring-boot-starter-logging: 默认的日志启动器,默认使用Logback。

Spring Boot Runner启动器

就是在 SpringBoot 启动的时候,想做点自己的事情,可以实现 CommandLineRunnerApplicationRunner 接口。
两个接口都只有一个 run() 方法,实现即可

如果有多个,还可以通过 org.springframework.core.annotation.Order 注解来实现启动顺序

获取配置文件的配置参数

womine.net 用的 Environment

但是还有 @PropertySource, @Value, @Environment, @ConfigurationProperties 也可以实现;
具体差异再补充

SpringBoot中如何解决跨域问题 ?

什么是Spring Profiles?


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!