Springboot相关面试题

1. Spring IOC、AOP举例说明

IOC(控制反转)

  • IOC 是一种设计模式,它将对象的创建、配置和管理从应用程序代码中分离出来,交给 Spring 容器来完成。这使得代码更加松散耦合,易于维护和测试。

AOP(面向切面编程)

  • AOP 允许在不修改原始代码的情况下,向应用程序中添加额外的功能,如日志记录、事务管理、性能监控等。这些功能被称为切面,通过在某些连接点(如方法调用、异常抛出等)上切入这些切面,实现横切关注点的分离。

2. springboot自动配置的原理

在Spring Boot应用的启动类上,通常会有一个@SpringBootApplication注解,这是一个组合注解,它包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan。其中,@EnableAutoConfiguration注解是开启自动配置的关键,它会导入AutoConfigurationImportSelector类,这个类负责读取META-INF/spring.factories文件,并加载其中定义的自动配置类。

 3. RequestMapping 和 GetMapping 的不同之处在哪里?

RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高清晰度

4. 拦截器和过滤器(Filter)有什么区别

  • 过滤器:属于 Servlet 规范,可对请求和响应进行过滤,在 doFilter 方法中实现逻辑,在 Servlet 容器启动时初始化,更底层,不依赖 Spring 容器。
  • 拦截器:属于 Spring 框架,仅对 Spring MVC 的请求处理流程进行拦截,可访问 Spring 上下文,可处理控制器和视图层,依赖 Spring 容器。

5. Spring Boot 配置文件的加载顺序是怎样的 

  1. 命令行参数。
  2. SPRING_APPLICATION_JSON 中的属性。
  3. Java 系统属性。
  4. 操作系统环境变量。
  5. application-{profile}.properties 或 application-{profile}.yml
  6. application.properties 或 application.yml

6. 如何在 Spring Boot 中实现多环境配置的切换 

  • 可以使用多个配置文件,如 application-dev.propertiesapplication-prod.properties 等,通过 spring.profiles.active 属性切换环境。也可以在启动命令中添加 --spring.profiles.active=prod 来激活生产环境配置。

7.  Spring Boot常用注解

@SpringBootApplication
  • 功能:这是一个组合注解,相当于 @SpringBootConfiguration@EnableAutoConfiguration 和 @ComponentScan 三个注解的集合。它会开启 Spring Boot 的自动配置功能,扫描当前包及其子包下的组件,并将主类标记为配置类。
@Component
  • 功能:这是一个通用的组件注解,用于将一个类标记为 Spring 容器管理的组件。被 @Component 注解的类会被 Spring 自动扫描并注册为 Bean。
@Service
  • 功能:它是 @Component 的一个特殊化注解,主要用于标记业务逻辑层的服务类,语义上更清晰地表明该类是一个服务组件。
@Repository
  • 功能:同样是 @Component 的特殊化注解,通常用于标记数据访问层的类,如 DAO(Data Access Object)类,Spring 会对其进行一些数据访问相关的增强处理。
@Controller
  • 功能:也是 @Component 的特殊化注解,用于标记控制器类,处理 HTTP 请求。在 Spring MVC 中,它与 @RequestMapping 等注解配合使用。
@RestController
  • 功能:这是 @Controller 和 @ResponseBody 的组合注解,用于标记 RESTful 风格的控制器类,简化了编写 RESTful 接口的过程,返回的数据会直接作为 HTTP 响应体。
@Autowired
  • 功能:用于实现依赖注入,Spring 会自动将匹配的 Bean 注入到被注解的字段、构造函数或方法参数中。
@RequestMapping
  • 功能:用于将 HTTP 请求映射到控制器的处理方法上,可以指定请求的 URL、请求方法(GET、POST 等)、请求参数等。
@GetMapping@PostMapping@PutMapping@DeleteMapping
  • 功能:这些是 @RequestMapping 的简化注解,分别对应 HTTP 的 GET、POST、PUT、DELETE 请求方法,使代码更简洁易读。
@Configuration
  • 功能:用于标记一个类为配置类,相当于传统的 Spring XML 配置文件。在配置类中可以使用 @Bean 注解定义 Bean。
@Bean
  • 功能:用于在配置类中定义 Bean,将方法的返回值注册为 Spring 容器管理的 Bean。
@Value
  • 功能:用于从配置文件(如 application.properties 或 application.yml)中读取配置值,并注入到类的字段中。
@ConfigurationProperties
  • 功能:用于将配置文件中的属性批量绑定到一个 Java 类上,方便管理和使用配置信息。
@Aspect
  • 功能:用于标记一个类为切面类,在 Spring AOP 中,切面类可以包含各种通知(如前置通知、后置通知等)和切点定义。

8. 什么是 Spring Boot?

它基于 Spring 框架,旨在简化 Spring 应用的初始搭建以及开发过程

提供了大量的默认配置和启动器,开发者只需进行少量的配置,甚至无需编写传统的 XML 配置文件,就能快速搭建起一个 Spring 项目,大大提高了开发效率。

能根据项目中添加的依赖和类路径下的资源等信息,自动进行相关的配置。

Spring Boot 应用可以独立运行。

为微服务架构的开发提供了很好的支持,每个微服务可以很方便地使用 Spring Boot 来构建,包括服务注册与发现、配置管理、服务调用等功能都有相应的组件和工具支持。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值