java面试题 --- Spring②

1. SpringBoot 有哪些优点?

  • 简单轻量,远离繁琐配置,开箱即用;
  • 提供了大量的 starter,不用导入大量的 maven 依赖,不用担心版本问题。

2. SpringBoot 的核心注解是什么?

  • @SpringBootApplication 是 SpringBoot 的核心注解,这个注解其实是一个是组合注解,它由 @ComponentScan、@Configuration 和 @EnableAutoConfiguration 三个注解构成。@ComponentScan 是用来做 Spring 组件扫描的,即被扫描到的就会被 Spring 管理;@Configuration 是用来实现配置文件的功能;@EnableAutoConfiguration 是来实现自动配置功能的。

3. 什么是 Java config?

  • java config 就是用纯 java 的方式来实现配置文件的功能。

4. 说一说 SpringBoot 自动装配的原理。

  • SpringBoot 自动装配的核心就是 @EnableAutoConfiguration 注解,它会扫描 META-INF/spring.factotires 文件中配置的需要进行自动装配的类名,然后根据类名,找到这些类对应的 properties.java 类,读取属性进行配置,然后加入到 IOC 容器中,这就完成了自动配置。

5. SpringBoot 配置文件有哪些格式?

  • .properties 和 .yml。

6. SpringBoot 可以用 xml 配置吗?

  • 可以,通过 @ImportResource 注解就可以导入自定义的配置,但是 Spring 不推荐 xml 配置,推荐用 java config。

7. bootstrap.properties 和 application.properties 有什么区别?

  • bootstrap.properties 先加载,一般用于从配置中心拉取配置。

8. SpringBoot 项目如何分环境开发?

  • 不同的环境用不同的配置文件,比如开发用 dev,测试用 test,然后在 application.properties 中通过 spring.profile = dev就可以指定用哪个环境的配置文件。

9. 你在项目中是如何解决跨域问题的?

  • 通过 cors 来解决跨域问题,新建配置类实现 WebMvcConfigurer 接口,重写其 addCorsMappings 方法。也可以新建 CorsConfig 配置类,配置 CorsFilter 对象。

10. 什么是 SpringBoot starter?

  • 一站式配置,聚合了一组依赖的 maven 依赖,比如要创建 spring web 项目,只需要引入 spring-boot-web-starter 即可,它会自动引入所需的依赖并且处理好依赖关系。

11. 简单介绍下 SpringCloud。

  • SpringCloud 是一个生态,囊括了一系列的技术,包括注册中心,服务调用,服务熔断降级,服务配置中心,服务网关,消息总线,消息驱动,服务调用链路追踪等。

12. SpringCloud 服务之间是怎么调用的?

  • 通过 open feign 调用,底层其实是 http 调用。

13. 服务网关你们用来做什么?

  • 统一对外的 API,同时也可以保护内部的 API,所有的请求进来先到网关,在这里做了权限控制,身份校验,幂等校验之后再进行流量转发。

14. 你们的幂等校验是怎么做的?

  • 拦截所有非 get 请求,将请求的参数以及地址拼接成一个 key,然后去 Redis 中查询该 key 是否有值,如果有就直接返回 Redis 中的结果,如果没有,就将该请求转发到对应的服务中,将操作结果放到 Redis 中。

你可能感兴趣的:(java面试题 --- Spring②)