Spring Boot 面试题 |
您所在的位置:网站首页 › 如何理解springboot中的startes › Spring Boot 面试题 |
1、什么是 Spring Boot?
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案。 主要是简化了使用 Spring 的难度,简省了繁重xml的配置,提供了各种启动器。 在运行过程中自定配置, 开发者能快速上手。 2、为什么要用 Spring Boot?Spring Boot 优点非常多,如: 独立运行 简化配置 自动配置 无代码生成和XML配置 无需部署war文件 3、Spring Boot 的核心配置文件有哪几个?它们的区别是什么?Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。 application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有以下几个应用场景。 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中,添加连接到配置中心的配置属性来加载外部配置中心的配置信息; 一些固定的不能被覆盖的属性; 一些加密/解密的场景; 4、Spring Boot 的配置文件有哪几种格式?它们有什么区别?有两种:.properties 和 .yml,它们的区别主要是书写格式不同。 app.user.name = javastack app: user: name: javastack另外,.yml 格式不支持 @PropertySource 注解导入配置。 5、SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?核心注解:@SpringBootApplication @SpringBootApplication 是一个组合注解,主要包含了3个组合注解 @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。 @EnableAutoConfiguration:开启自动配置注解,如果想关闭某一个自动配置功能,如下: 示例:关闭数据源自动配置功能 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })@ComponentScan:Spring组件扫描。 6、开启SpringBoot特性有哪几种方式?继承 spring-boot-starter-parent 项目 导入 spring-boot-dependencies 项目依赖 示例说明:(可以用作回答参考) spring-boot-starter-parent org.springframework.boot spring-boot-starter-parent 1.5.6.RELEASEspring-boot-dependencies org.springframework.boot spring-boot-dependencies 1.5.6.RELEASE pom importSpring Boot依赖包里面的组件的版本都是和当前Spring Boot绑定的,如果要修改里面组件的版本,只需要添加如下属性覆盖即可,但这种方式只对继承有效,导入的方式无效。 1.7.25如果导入的方式要实现版本的升级,达到上面的效果,这样也可以做到,把要升级的组件依赖放到Spring Boot之前。 org.springframework.data spring-data-releasetrain Fowler-SR2 import pom org.springframework.boot spring-boot-dependencies 1.5.6.RELEASE pom import 7、SpringBoot需要独立的容器运行吗?可以不需要,`内置了 Tomcat/ Jetty 等容器。 8、运行SpringBoot有哪几种方式?打包用命令或者放到容器中运行 用 Maven/ Gradle 插件运行 直接执行 main 方法运行 9、Spring Boot 自动配置原理是什么?Spring Boot 自动配置原理:详解 总结: Spring Boot 有一个注解 @SpringBootApplication,它是一个复合或者派生类注解。 当 Spring Boot 调用 run 方法,Spring Boot 通过 @EnableAutoConfiguration 注解找到 getCandidateConfigurations 方法。 找到所有需要自动配置类的集合,以 List 返回。 自动配置类存储在 MATE-INF/spring.factories 文件下: 文件中以 AutoConfiguration 命名结尾的向 Spring 容器中添加组件 通过以 Properties 结尾命名的 可以获取全局配置文件的配置属性 因为 xxxProperties文件 和 @ConfigurationProperties 注解 与全局配置文件中的对应属性进行了绑定。 所以在项目中,全局配置文件 application.properties 中可以修改 server.port=8081 这就是 Spring Boot 的自动配置原理。 10、你如何理解 Spring Boot 中的 StartersStarters 可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术。 而不需要到处找示例代码和依赖包。 如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 依赖就能使用了。 11、如何在 Spring Boot 启动的时候运行一些特定的代码?可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。 12、Spring Boot 有哪几种读取配置的方式?Spring Boot 读取配置方式:详见 使用@Value注解加载单个属性值 使用@ConfigurationProperties注解 读取指定文件中的内容@PropertySource+@Value 读取指定文件中的内容@PropertySource+@ConfigurationProperties 使用springBoot的Environment接口获取配置 13、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?Spring Boot 支持: Java Util Logging, Log4j2, Lockback 作为日志框架。 默认:Logback 作为日志框架 14、SpringBoot 实现热部署有哪几种方式?两种方式: Spring Loaded Spring-boot-devtools 15、你如何理解 Spring Boot 配置加载顺序?properties 文件; YAML文件; 系统环境变量; 命令行参数; 16、Spring Boot 如何定义多套不同环境配置?(默认)applcation.properties (开发)application-dev.properties (测试)application-test.properties (生产)application-prod.properties 17、Spring Boot 可以兼容老 Spring 项目吗,如何做?可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。 18、保护 Spring Boot 应用有哪些方法?在生产中使用HTTPS 使用Snyk检查你的依赖关系 升级到最新版本 启用CSRF保护 使用内容安全策略防止XSS攻击 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |