【Java架构师面试网】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 公众号:Java架构师面试网,关注回复“资料”即可领取精美整理的面试资料一份哦~
1、什么是springboot
- 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 2) 创建独立的spring引用程序 main方法运行 3) 嵌入的Tomcat 无需部署war文件 4) 简化maven配置
2、什么是 JavaConfig? Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。 使用 JavaConfig 的优点在于: 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。 减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。 JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将 JavaConfig 与 XML 混合匹配是理想的。 类型安全和重构友好。 JavaConfig 提供了一种类型安全的方法来配置 Spring 容器。由于Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。
3、Spring Boot有哪些优点? 答:
- 快速创建独立运行的spring项目与主流框架集成 2) 使用嵌入式的servlet容器,应用无需打包成war包 3) starters自动依赖与版本控制 4) 大量的自动配置,简化开发,也可修改默认值 5) 准生产环境的运行应用监控 6) 与云计算的天然集成
4、Spring Boot 提供了哪些核心功能?
- 独立运行 Spring 项目 2) 内嵌 Servlet 容器 Spring Boot 可以选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。 3) 提供 Starter 简化 Maven 配置 例如,当你使用了 spring-boot-starter-web ,会自动加入如下依赖:
spring-boot-starter-web
的 pom 文件 4) 自动配置 Spring Bean Spring Boot 检测到特定类的存在,就会针对这个应用做一定的配置,进行自动配置 Bean ,这样会极大地减少我们要使用的配置。 5) 准生产的应用监控 Spring Boot 提供基于 HTTP、JMX、SSH 对运行时的项目进行监控。 6) 无代码生成和 XML 配置 Spring Boot 没有引入任何形式的代码生成,它是使用的 Spring 4.0 的条件 @Condition 注解以实现根据条件进行配置。同时使用了 Maven /Gradle 的依赖传递解析机制来实现 Spring 应用里面的自动配置。
5、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。
6、创建一个 Spring Boot Project 的最简单的方法是什么? Spring Initializer 是创建 Spring Boot Projects 的一个很好的工具
7、运行 Spring Boot 有哪几种方式?
- 打包成 Fat Jar ,直接使用 java -jar 运行。目前主流的做法,推荐。 2) 在 IDEA 或 Eclipse 中,直接运行应用的 Spring Boot 启动类的 #main(String[] args) 启动。适用于开发调试场景。 3) 如果是 Web 项目,可以打包成 War 包,使用外部 Tomcat 或 Jetty 等容器。
8、Spring Boot中的监视器是什么? Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。
9、什么是starter? Starter主要是用来简化maven依赖
10、Spring Boot 常用的 Starter 有哪些? spring-boot-starter-web :提供 Spring MVC + 内嵌的 Tomcat 。 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate 。 spring-boot-starter-data-redis :提供 Redis 。 mybatis-spring-boot-starter :提供 MyBatis 。
11、什么是YAML? YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。
12、如何集成Spring Boot和ActiveMQ? 对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。 它只需要很少的配置,并且不需要样板代码。
13、springboot常用的starter有哪些? spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持 spring-boot-starter-data-jpa 数据库支持 spring-boot-starter-data-redis redis数据库支持 spring-boot-starter-data-solr solr支持 mybatis-spring-boot-starter 第三方的mybatis集成starter
14、springboot自动配置的原理 在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean
15、springboot读取配置文件的方式 springboot默认读取配置文件为application.properties或者是application.yml
16、Spring Boot 需要独立的容器运行吗? 可以不需要,内置了 Tomcat/ Jetty 等容器。
17、运行 Spring Boot 有哪几种方式? 1)打包用命令或者者放到容器中运行 2)用 Maven/ Gradle 插件运行 3)直接执行 main 方法运行
18、Spring Boot 的核心配置文件有哪几个?它们的区别是什么? Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。 application 配置文件这个容易了解,主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有以下几个应用场景。 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中增加连接到配置中心的配置属性来加载外部配置中心的配置信息; 少量固定的不能被覆盖的属性; 少量加密/解密的场景;
19、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解: @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。 @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。 @ComponentScan:Spring组件扫描