随着 Spring Boot 使用越来越广泛,Spring Boot 已经成为 Java 程序员面试的知识点,Spring Boot 你会多少?本文将讨论Spring Boot中最常见的10个面试问题。在当今就业市场中,这些问题出现的频率呈上升趋势并且有一些棘手。如果这些问题你都会的话~~~那么,,大神收下我的膝盖。
核心功能:
1.1: springboot项目为独立运行的spring项目,java -jar xx.jar即可运行.
1.2: 内嵌servlet容器(可以选择内嵌: tomcat ,jetty等服务器.).
1.3: 提供了starter的pom 配置 简化了 maven的配置.
1.4: 自动配置spring容器中的bean.当不满足实际开发场景,可自定义bean的自动化配置.
1.5: 准生产的应用监控(基于: ssh , http , telnet 对服务器运行的项目进行监控.).
1.6: springboot无需做出xml配置,也不是通过代码生成来实现(通过条件注解.).
使用优点:
1.快速搭建项目,
2,与主流框架集成无需配置集成.
3.内嵌服务容器.
4.具有应用监控.
5.开发部署方便,后期与云计算平台集成方便(docket).
答: Spring Boot的优点是
减少开发、测试的时间和工作量。
使用JavaConfig有助于避免使用XML。
避免大量maven导入和各种版本冲突。
提供可选的开发方法。
通过提供默认开发方式进行快速开发。
不需要单独的Web服务器。这意味着您不再需要启动Tomcat、Glassfish或其他任何东西。
由于没有web.xml文件,所以需要更少的配置。只需添加带@ configuration注释的类,然后可以添加带@ bean注释的方法,Spring将自动加载对象并像往常一样管理它。您甚至可以将@Autowired添加到bean方法中,使Spring autowire成为bean所需的依赖项。
基于环境的配置——使用这些属性,您可以将其传递到您正在使用的应用程序环境中:- dspring .profile .active={enviorement}。在加载主应用程序属性文件之后,Spring将在(application-{environment}.properties)处加载后续的应用程序属性文件。
答: Spring Boot应用程序可以使用Maven和Gradle开发。
答:Spring JavaConfig是Spring社区的一个产品,它提供了一种纯java方法来配置Spring IoC容器。因此,它有助于避免使用XML配置。使用JavaConfig的优点是:
面向对象的配置。因为配置在JavaConfig中定义为类,所以用户可以充分利用Java中的面向对象特性。一个配置类可以子类化另一个配置类,覆盖它的@Bean方法,等等。
减少或消除XML配置。已经证明了基于依赖注入原则的外部化配置的好处。然而,许多开发人员不愿意在XML和Java之间来回切换。JavaConfig为开发人员提供了一种纯java方法来配置Spring容器,这种方法在概念上类似于XML配置。从技术上讲,仅使用 JavaConfig配置类来配置容器是可行的,但是在实践中,许多人发现将JavaConfig与XML混合并匹配是理想的。
类型安全的重构能力。JavaConfig提供了一种类型安全的配置Spring容器的方法。由于Java 5.0对泛型的支持,现在可以通过类型而不是名称检索bean,不需要进行任何基于类型转换或字符串的查找。
答:要在自定义端口上运行spring引导应用程序,可以在application.properties中指定端口。
server.port = 8090
答:ELK堆栈由三个开源产品组成——Elasticsearch、Logstash和Kibana from Elastic。
Elasticsearch是一个基于Lucene搜索引擎的NoSQL数据库。
Logstash是一个日志管道工具,它接受来自不同来源的输入,执行不同的转换,并将数据导出到不同的目标。
它是一个动态的数据收集管道,具有可扩展的插件生态系统和强大的弹性搜索协同作用
Kibana是一个可视化UI层,工作在Elasticsearch之上。
这三个项目一起用于各种环境中的日志分析。因此Logstash收集和解析日志、弹性搜索索引并存储这些信息,而Kibana提供了一个UI层,提供可操作的可见性。
为了集成Spring Boot和ActiveMQ,我们使用Spring - Boot -starter- ActiveMQ依赖项,它只需要很少的配置,没有样板代码。
Spring引导ActiveMQ说明
答:为了集成Spring Boot和Apache Kafka,我们使用Spring - Kafka依赖项。
答:使用Spring Boot实现分页非常简单。使用Spring Data-JPA,这是通过传递可分页的org.springframe .data.domain来实现的。可分页到存储库方法。
答:Spring提供了一种非常有用的方法,可以使用ControllerAdvice处理异常。我们将实现一个ControlerAdvice类,它将处理控制器类抛出的所有异常。
答:缓存是本地内存的一个区域,它保存了频繁访问的数据的副本,否则获取或计算这些数据将非常昂贵。使用Hazelcast进行缓存。
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。
开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为 HTTP URL 访问的REST 端点来检查状态。
就像引入其他库一样,我们可以在 Maven 工程中加入 SpringBoot 依赖。然而,最好是从 spring-boot-starter-parent 项目中继承以及声明依赖到 Spring Boot starters。这样做可以使我们的项目可以重用 SpringBoot 的默认配置。
继承 spring-boot-starter-parent 项目依赖很简单 – 我们只需要在 pom.xml 中定义一个 parent 节点:
1 <parent>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-parent</artifactId>
4 <version>2.1.1.RELEASE</version>
5 </parent>
我们可以在 Maven central 中找到 spring-boot-starter-parent 的最新版本。
使用 starter 父项目依赖很方便,但并非总是可行。例如,如果我们公司都要求项目继承标准 POM,我们就不能依赖 SpringBoot starter 了。
这种情况,我们可以通过对 POM 元素的依赖管理来处理:
1 <dependencyManagement>
2 <dependencies>
3 <dependency>
4 <groupId>org.springframework.boot</groupId>
5 <artifactId>spring-boot-dependencies</artifactId>
6 <version>2.1.1.RELEASE</version>
7 <type>pom</type>
8 <scope>import</scope>
9 </dependency>
10 </dependencies>
11 </dependencyManagement>
spring-boot-starter-parent //boot项目继承的父项目模块.
spring-boot-starter-web //boot项目集成web开发模块.
spring-boot-starter-tomcat //boot项目集成tomcat内嵌服务器.
spring-boot-starter-test //boot项目集成测试模块.
mybatis-spring-boot-starter //boot项目集成mybatis框架.
spring-boot-starter-jdbc //boot项目底层集成jdbc实现数据库操作支持.
springboot中的核心启动主函数(main函数)的作用.用到哪些注解.注解的作用.
@SpringBootApplication
public class SpringBoot1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBoot1Application.class, args);
}
}
该主函数: 主要启动springboot框架.用于加载容器和诸多默认组件.
用到核心注解: @SpringBootApplication . 作用:用于标识声明一个springboot框架容器.
bootstrap.properties/bootstrap.yml //用于配置无需重写的系统常量,例如springcloud项目用到的config配置中心的连接属性等.加载优先级高于application.properties.
application.properties/application.yml //用于配置重写springboot项目的默认框架属性,例如:重写tomcat,springmvc,日志框架等默认属性.主要提供给spring框架加载使用.
注: properties后缀名与yml后缀名配置文件二选一即可. 两种不同格式的配置文件而已.
答:当我们应用根目录时,可以直接映射,将 index.html 放入下面的位置:
classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
classpath:/public/index.html
答:SpringBoot 静态资源直接映射为/**,可以通过根目录来访问。/META-INF/resources/webjars/映射为/webjars/,通过访问 /webjar 访问。优先级顺序为:META-INF/resources > resources > static > public。
答:WebMvcConfigurerAdapter 实现 WebMvcConfigurer 接口,常用的可能需要重写的方法有下面几个:
/** 解决跨域问题 /
public void addCorsMappings(CorsRegistry registry) ;
/ 添加拦截器 /
void addInterceptors(InterceptorRegistry registry);
/ 这里配置视图解析器 /
void configureViewResolvers(ViewResolverRegistry registry);
/ 配置内容裁决的一些选项 /
void configureContentNegotiation(ContentNegotiationConfigurer configurer);
/ 视图跳转控制器 /
void addViewControllers(ViewControllerRegistry registry);
/ 静态资源处理 /
void addResourceHandlers(ResourceHandlerRegistry registry);
/ 默认静态资源处理器 **/
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
好了各位,本文到这里就结束了!如果本文有任何错误,请批评指教,不胜感激 !
整理了 1000 道 2019 年多家公司 java 面试题 400 多页 pdf 文档,还有几百页的Java核心知识点PDF。
欢迎大家领取,点击:818491202加入。验证:CSDN,即可免费领取。