Spring boot面试理论

1、什么是springboot 
用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 
创建独立的spring引用程序 main方法运行 
嵌入的Tomcat 无需部署war文件 
简化maven配置 
自动配置spring添加对应功能starter自动化配置 
答:spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

2、Spring Boot有哪些优点? 
答:-快速创建独立运行的spring项目与主流框架集成 
-使用嵌入式的servlet容器,应用无需打包成war包 
-starters自动依赖与版本控制 
-大量的自动配置,简化开发,也可修改默认值 
-准生产环境的运行应用监控 
-与云计算的天然集成

3、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 
这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 
Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 
开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 
这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。

4、Spring Boot中的监视器是什么? 
Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 
有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

5、什么是YAML? 
YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 
与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

6、如何集成Spring Boot和ActiveMQ? 
对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。 它只需要很少的配置,并且不需要样板代码。

7、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

8、springboot自动配置的原理 
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 
会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean

9.常见的starter会包几个方面的内容。分别是什么

常见的starter会包括下面四个方面的内容 
自动配置文件,根据classpath是否存在指定的类来决定是否要执行该功能的自动配置。 
spring.factories,非常重要,指导Spring Boot找到指定的自动配置文件。 
endpoint:可以理解为一个admin,包含对服务的描述、界面、交互(业务信息的查询)。 
health indicator:该starter提供的服务的健康指标。
两个需要注意的点: 
1. @ConditionalOnMissingBean的作用是:只有对应的bean在系统中都没有被创建,它修饰的初始化代码块才会执行,【用户自己手动创建的bean优先】。
 2. Spring Boot Starter找到自动配置文件(xxxxAutoConfiguration之类的文件)的方式有两种:spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置; 
@EnableXxxxx:有时需要由starter的用户触发*查找自动配置文件的过程

10.总结Spring Boot Starter的工作原理

Spring Boot Starter的工作原理如下: 
1. Spring Boot 在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR 
2. 根据spring.factories配置加载AutoConfigure类 
3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context 

11.谈谈你对Spring Boot的认识。

spring Boot是一个开源框架,它可用于创建可执行的Spring应用程序,采用了习惯优于配置的方法。此框架的神奇之处在于@EnableAutoConfiguration注解,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。 
1. @Enable*注释 @Enable*注释并不是新发明的注释,早在Spring 3框架就引入了这些注释,用这些注释替代XML配置文件。 很多Spring开发者都知道@EnableTransactionManagement注释,它能够声明事务管理;@EnableWebMvc注释,它能启用Spring MVC;以及@EnableScheduling注释,它可以初始化一个调度器。 
 
2. 属性映射 下面看MongoProperties类,它是一个Spring Boot属性映射的例子: @ConfigurationProperties(prefix = "spring.data.mongodb") public class MongoProperties { private String host; private int port = DBPort.PORT; private String uri = "mongodb://localhost/test"; private String database; // ... getters/ setters omitted } @ConfigurationProperties注释将POJO关联到指定前缀的每一个属性。例如,spring.data.mongodb.port属性将映射到这个类的端口属性。 强烈建议Spring Boot开发者使用这种方式来删除与配置属性相关的瓶颈代码。 
 
3.@Conditional注释 Spring Boot的强大之处在于使用了Spring 4框架的新特性:@Conditional注释,此注释使得只有在特定条件满足时才启用一些配置。 在Spring Boot的org.springframework.boot.autoconfigure.condition包中说明了使用@Conditional注释能给我们带来什么,下面对这些注释做一个概述: @ConditionalOnBean @ConditionalOnClass @ConditionalOnExpression @ConditionalOnMissingBean @ConditionalOnMissingClass @ConditionalOnNotWebApplication @ConditionalOnResource @ConditionalOnWebApplication 
 
4.应用程序上下文初始化器 spring.factories还提供了第二种可能性,即定义应用程序的初始化。这使得我们可以在应用程序载入前操纵Spring的应用程序上下文ApplicationContext。 特别是,可以在上下文创建监听器,使用ConfigurableApplicationContext类的addApplicationListener()方法。 AutoConfigurationReportLoggingInitializer监听到系统事件时,比如上下文刷新或应用程序启动故障之类的事件,Spring Boot可以执行一些工作。这有助于我们以调试模式启动应用程序时创建自动配置的报告。 要以调试模式启动应用程序,可以使用-Ddebug标识,或者在application.properties文件这添加属性debug= true。

12.自定义springboot-starter注意事项

1. springboot默认scan的包名是其main类所在的包名。如果引入的starter包名不一样,需要自己添加scan。 @ComponentScan(basePackages = {"com.xixicat.demo","com.xixicat.sms"}) 
2. 对于starter中有feign的,需要额外指定 @EnableFeignClients(basePackages = {"com.xixicat.sms"})
3. 对于exclude一些autoConfig @EnableAutoConfiguration(exclude ={MetricFilterAutoConfiguration.class})

https://blog.csdn.net/yuzongtao/article/details/84295732#commentBox

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值