SpringBoot面试整理

1.SpringBoot的约定优于配置,你的理解是什么

SpringBoot的约定优于配置是指SpringBoot框架通过一系列的默认约定来简化应用程序的配置工作。在SpringBoot中,开发者只需按照一定的约定进行开发,不需要手动进行大量的配置,框架会根据约定自动进行配置,从而减少了开发者的工作量。

这种约定优于配置的设计思想体现在很多方面。例如,SpringBoot会自动扫描应用程序中的组件(如控制器、服务等),无需手动配置。另外,SpringBoot会根据依赖的库自动配置相关的功能,比如根据数据库依赖自动配置数据库连接池等。

通过约定优于配置,SpringBoot可以使开发者专注于业务逻辑的实现,而不需要过多关注配置细节。这种设计理念使得SpringBoot框架具有快速开发、简化配置、提高开发效率的特点。同时,SpringBoot也提供了一些灵活的配置选项,可以根据需求进行个性化配置。

总之,SpringBoot的约定优于配置使开发者能够更加高效地开发应用程序,减少了繁琐的配置工作,并且提供了灵活性以满足个性化需求。

2.SpringBoot如何解决跨域问题?

在Spring Boot中,可以通过配置来解决跨域问题。以下是几种常见的解决方案:

  1. 使用注解:可以在控制器类或方法上添加@CrossOrigin注解来允许特定源的跨域请求。例如,可以在控制器类上添加@CrossOrigin(origins = "http://example.com")来指定允许来自"http://example.com"域的跨域请求。

  2. 使用过滤器:可以创建一个过滤器来处理跨域问题。通过过滤器,可以在请求到达控制器之前进行跨域处理。例如,可以创建一个实现了javax.servlet.Filter接口的过滤器,在doFilter方法中设置响应的跨域头信息。

  3. 使用全局配置:可以创建一个全局配置类,继承WebMvcConfigurerAdapter并重写addCorsMappings方法,通过该方法进行全局跨域设置。例如:
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}

以上是几种常见的解决跨域问题的方式,根据具体的需求选择适合的方法即可。

3.Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中。

4.SpringBoot的自动配置原理是什么?

主要是Spring Boot的启动类上的核心注解SpringBootApplication注解主配置类,有了这个主配置类启动时就会为SpringBoot开启一个@EnableAutoConfiguration注解自动配置功能。
有了这个EnableAutoConfiguration的话就会:

  1. 从配置文件META_INF/Spring.factories加载可能用到的自动配置类
  2. 去重,并将exclude和excludeName属性携带的类排除
  3. 过滤,将满足条件(@Conditional)的自动配置类返回
     

5.如何使用 Spring Boot 实现全局异常处理?

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通过实现一个
ControlerAdvice 类,来处理控制器类抛出的所有异常。

6.SpringBoot与SpringCloud 区别

SpringBoot是快速开发的Spring框架,SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。

7.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解

  1. @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  2. @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如: java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  3. @ComponentScan:Spring组件扫描。
     

你可能感兴趣的:(spring,boot,面试,java)