Spring Boot 面试,一个问题就干趴下了!

  • 时间:
  • 浏览:0
  • 来源:大发时时彩官网_大发时时彩邀请码_大发时时彩娱乐平台

前言

随着 Spring Boot 使用都这么 广泛,Spring Boot 将会成为 Java 应用应用程序员面试的知识点,全都 同学对 Spring Boot 理解都会都这么 深刻,老是 就会被哪有几个连环跑给干趴下了!

比如下面这人段的 Spring Boot 问答:

问:你我其实 Spring Boot 最大的优势是那此呢?

答:Spring Boot 的最大的优势是“约定优于配置“。“约定优于配置“是并有的是软件设计范式,开发人员按照约定的依据 来进行编程,还才能减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

问:Spring Boot 中 “约定优于配置“的具体产品体现在哪里。

答:Spring Boot Starter、Spring Boot Jpa 都会“约定优于配置“的并有的是体现。都会通过“约定优于配置“的设计思路来设计的,Spring Boot Starter 在启动的过程中会根据约定的信息对资源进行初始化;Spring Boot Jpa 通过约定的依据 来自动生成 Sql ,处里一定量无效代码编写。具体全部还才能参考:Spring Boot 为那此都这么 火?

问:Spring Boot Starter 的工作原理是那此?

答:Spring Boot 在启动的之都会干这几件事情:

  • ① Spring Boot 在启动都会去依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,为什让根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。

  • ② 根据 spring.factories 配置加载 AutoConfigure 类

  • ③ 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context

总结一下,我我其实也不我 Spring Boot 在启动的前一天,按照约定去读取 Spring Boot Starter 的配置信息,再根据配置信息对资源进行初始化,并注入到 Spring 容器中。从前 Spring Boot 启动完毕后,就将会准备好了一切资源,使用过程中直接注入对应 Bean 资源即可。

这也不我简单的三连环问答,谁能谁能告诉我有哪有几个同学才能全部的回答出来。

我我其实 Spring Boot 所含全都 的技术点还才能挖掘,今天给全都人 整理了还还有一个高频 Spring Boot 面试题,希望还才能在后期的面试中帮助到全都人 。

1、Spring Boot 的自动配置是咋样实现的?

Spring Boot 项目的启动注解是:@SpringBootApplication,我我其实它也不我由下面还还有一个 注解组成的:

  • @Configuration

  • @ComponentScan

  • @EnableAutoConfiguration

其中 @EnableAutoConfiguration 是实现自动配置的入口,该注解又通过 @Import 注解导入了AutoConfigurationImportSelector,在该类中加载 META-INF/spring.factories 的配置信息。为什让筛选出以 EnableAutoConfiguration 为 key 的数据,加载到 IOC 容器中,实现自动配置功能!

2、那此是嵌入式服务器?全都人 为那此要使用嵌入式服务器呢?

思考一下在你的虚拟机上部署应用应用应用程序还才能了些那此。

第一步:安装 Java

第二部:安装 Web 将会是应用应用应用程序的服务器(Tomat/Wbesphere/Weblogic 等等)

第三部:部署应用应用应用程序 war 包

将会全都人 想比较复杂那此步骤,应该咋样做呢?

让全都人 来思考咋样使服务器成为应用应用应用程序的一次责?

你只还才能了还还有一个 安装了 Java 的虚拟机,就还才能直接在里边部署应用应用应用程序了,

是都会很爽?

这人想法是嵌入式服务器的起源。

当全都人 创建还还有一个 还才能部署的应用应用应用程序的前一天,全都人 将会把服务器(相似,tomcat)嵌入到可部署的服务器中。

相似,对于还还有一个 Spring Boot 应用应用应用程序来说,你还才能生成还还有一个 所含 Embedded Tomcat 的应用应用应用程序 jar。你就还才能像运行正常 Java 应用应用应用程序一样来运行 web 应用应用应用程序了。

嵌入式服务器也不我全都人 的可执行单元所含服务器的二进制文件(相似,tomcat.jar)。

3、微服务一同调用多个接口,为什支持事务的啊?

支持分布式事务,还才能使用Spring Boot集成 Aatomikos来处里,为什让我一般不建议从前使用,将会使用分布式事务会增加请求的响应时间,影响系统的TPS。一般在实际工作中,会利用消息的补偿机制来处里分布式的事务。

4、shiro和oauth还有cas全都人 之间的关系是那此?问下您公司权限是咋样设计,还有也不我这哪有几个概念的区别。

cas和oauth是还还有一个 处里单点登录的组件,shiro主也不我负责权限安全方面的工作,全都 功能点不一致。但往往还才能了单点登陆和权限控制一同来使用,全都 都会 cas+shiro将会oauth+shiro从前的组合。

token一般是客户端登录后服务端生成的令牌,每次访问服务端会进行校验,一般保存到内存即可,也还才能里装 去去全都介质;redis还才能做Session共享,将会前端web服务器有几台负载,为什让还才能了保持用户登录的情况,这场景使用比较常见。

全都人 公司使用oauth+shiro从前的依据 来做后台权限的管理,oauth负责多后台统一登录认证,shiro负责给登录用户赋予不同的访问权限。

5、各服务之间通信,对Restful和Rpc这2种依据 咋样做选用?

在传统的SOA治理中,使用rpc的居多;Spring Cloud默认使用restful进行服务之间的通讯。rpc通讯速率会比restful要高全都,为什让对于大多数公司来讲,这点速率影响甚微。我建议使用restful这人依据 ,易于在不同语言实现的服务之间通讯。

6、为什设计无情况服务?

对于无情况服务,首先说一下那此是情况:将会还还有一个 数据还才能了被多个服务共享,才能完成一笔交易,都这么 这人数据被称为情况。进而依赖这人“情况”数据的服务被称为有情况服务,反之称为无情况服务。

都这么 这人无情况服务原则并都会说在微服务架构里就不允许存在情况,表达的真实意思是要把有情况的业务服务改变为无情况的计算类服务,都这么 情况数据也就相应的迁移到对应的“有情况数据服务”中。

场景说明:相似全都人 前一天在本地内存中建立的数据缓存、Session缓存,到现在的微服务架构中就应该把那此数据迁移到分布式缓存中存储,让业务服务变成还还有一个 无情况的计算节点。迁移后,就还才能做到按需动态伸缩,微服务应用在运行时动态增删节点,就不再还才能了考虑缓存数据咋样同步的那此的问题。

7、Spring Cache 并有的是常用的缓存注解和意义?

@Cacheable ,用来声明依据 是可缓存,将结果存储到缓存中以便后续使用相同参数调用时不需执行实际的依据 ,直接从缓存中取值。

@CachePut,使用 @CachePut 标注的依据 在执行前,太大去检查缓存中算是存在前一天执行过的结果,也不我每次都会执行该依据 ,并将执行结果以键值对的形式存入指定的缓存中。

@CacheEvict,是用来标注在还才能了清除缓存元素的依据 或类上的,当标记在还还有一个 类上时表示其中所有的依据 的执行都会触发缓存的清除操作。

8、Spring Boot 咋样设置支持跨域请求?

现代浏览器出于安全的考虑, HTTP 请求时还才能了遵守同源策略,为什让也不我跨域的 HTTP 请求,默认情况下是被禁止的,IP(域名)不同、将会端口不同、协议不同(比如 HTTP、HTTPS)都会造成跨域那此的问题。

一般前端的处里方案有:

  • ① 使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,也不我动态创建<script>标签,为什让利用<script>的 SRC 不受同源策略约束来跨域获取数据。缺点是还才能了后端配合输出特定的返回信息。

  • ② 利用反应代理的机制来处里跨域的那此的问题,前端请求的前一天先将请求发送到同源地址的后端,通前一天端请求转发来处里跨域的访问。

之后 HTML5 支持了 CORS 协议。CORS 是还还有一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 还才能了同源使用的限制。它通过服务器增加还还有一个 特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,将会浏览器支持 CORS、为什让判断 Origin 通过励志的话 ,就会允许 XMLHttpRequest 发起跨域请求。

前端使用了 CORS 协议,就还才能了后端设置支持非同源的请求,Spring Boot 设置支持非同源的请求有并有的是依据 。

第一,配置 CorsFilter。


@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
          config.addAllowedOrigin("*");
          config.setAllowCredentials(true);
          config.addAllowedMethod("*");
          config.addAllowedHeader("*");
          config.addExposedHeader("*");

        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        return new CorsFilter(configSource);
    }
}

还才能了配置上述的一段代码。第二种依据 稍微简单全都。

第二,在启动类加进去去进去:


public class Application extends WebMvcConfigurerAdapter {  

    @Override  
    public void addCorsMappings(CorsRegistry registry) {  

        registry.addMapping("/**")  
                .allowCredentials(true)  
                .allowedHeaders("*")  
                .allowedOrigins("*")  
                .allowedMethods("*");  

    }  
}  

9、JPA 和 Hibernate 有那此区别?JPA 还才能支持动态 SQL 吗?

JPA并有的是是并有的是规范,它的本质是并有的是ORM规范(都会ORM框架,将会JPA并未提供ORM实现,也不我制定了规范)将会JPA是并有的是规范,全都 ,也不我提供了全都相关的接口,为什让接口暂且能直接使用,JPA底层还才能了并有的是JPA实现,Hibernate 是 JPA 的还还有一个 实现集。

JPA 是根据实体类的注解来创建对应的表和字段,将会还才能了动态创建表将会字段,还才能了动态构建对应的实体类,再重新调用Jpa刷新整个Entity。动态SQL,mybatis支持的最好,jpa也还才能支持,为什让都这么 Mybatis都这么 灵活。

10、Spring 、Spring Boot 和 Spring Cloud 的关系?

Spring 最初最核心的两大核心功能 Spring Ioc 和 Spring Aop 成就了 Spring,Spring 在这两大核心的功能上不断的发展,才有了 Spring 事务、Spring Mvc 等一系列伟大的产品,最终成就了 Spring 帝国,到了后期 Spring 几乎还才能处里企业开发中的所有那此的问题。

Spring Boot 是在强大的 Spring 帝国生态基础里边发展而来,发明的故事者 Spring Boot 都会为了取代 Spring ,是为了让全都人 更容易的使用 Spring 。

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地比较复杂了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都还才能用 Spring Boot 的开发风格做到一键启动和部署。

Spring Cloud 是为了处里微服务架构中服务治理而提供的一系列功能的开发框架,为什让 Spring Cloud 是全部基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 形态学 整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的处里方案。

用一组不太合理的所含关系来表达它们之间的关系。

Spring ioc/aop > Spring > Spring Boot > Spring Cloud

猜你喜欢

刷新纪录!京东生鲜618开场49分钟成交额就超2017年618全天!

6月18日零点钟声一响,京东618全球年中购物节正式进入了高潮期!京东生鲜火力全开,创下多项记录!5分钟成交额超去年618当天第1小时,49分钟成交额超2017年618全天。仅

2019-12-07

华为Mate 20 X叫板Switch,发布会疑似出现北通G1的身影

北京时间10月16日21时,华为在伦敦举行了秋季旗舰新品发布会。在发布会上华为一举回应了华为Mate20、华为Mate20Pro、华为Mate20RS保时捷设计、华为Mate2

2019-12-07

《捉妖记2》激萌预告:小妖王胡巴只身踏上寻亲路

电影《捉妖记2》新“逃之妖妖”版预告发布,本片讲述了天荫和小岚找回胡巴团聚一堂的合家欢故事。《捉妖记2》预告:(IT之家移动客户端用户若无法观看视频,请点此查看)外面的世界风景

2019-12-07

黄氏刀法惊诧江湖!GTX 1070 Ti最深度评测

黄氏刀法惊诧江湖!GTX1070Ti最层厚评测2017-11-0619:44:46    作者:茶茶编辑:后边文Q[爆料]收藏文章在过去显卡市场更为火爆的就让,五个劲显卡的档位

2019-12-07

10月5日部分小米红米机型将停止开发版内测公测

【TechWeb】7月6日消息,7月5日,MIUI发布MIUI系统开发版策略调整补充说明,2019年10月5日,要素小米、红米机型将停止开发版内测公测。具体机型包括:红米Not

2019-12-07