SpringBoot面试题
SpringBoot 面试题
核心配置文件
application
应用场景:
- SpringBoot项目的自动化配置
bootstrap
bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。
特点:
- 由父 ApplicationContext 加载
- bootstrap 里面的属性不能被覆盖
- 从额外的资源来加载配置
应用场景:
- 使用 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 启动的时候,想做点自己的事情,可以实现 CommandLineRunner
或 ApplicationRunner
接口。
两个接口都只有一个 run() 方法,实现即可
如果有多个,还可以通过 org.springframework.core.annotation.Order
注解来实现启动顺序
获取配置文件的配置参数
womine.net 用的 Environment
。
但是还有 @PropertySource
, @Value
, @Environment
, @ConfigurationProperties
也可以实现;
具体差异再补充
SpringBoot中如何解决跨域问题 ?
什么是Spring Profiles?
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!