大发快三_快三规则_大发快三规则 - 大发快三,快三规则,大发快三规则精选头条好文,分享实用生活小技巧,达人购物经验,包括科技、手机、数码、娱乐、美容、母婴、旅行、居家等内容,打造优质阅读体验。

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

  • 时间:
  • 浏览:4

前言

随着 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 蕴含统统的技术点还还上能 挖掘,今天给当.我挂接了5个高频 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