1.为什么使用springboot

“总的来说,Spring Boot 并不是对 Spring 功能的增强,而是提供了一种更高效的使用方案。它让我们能够从沉重的配置文件中解脱出来,专注于纯粹的业务逻辑开发。” “使用 Spring Boot 的核心原因是为了简化 Spring 应用的搭建和开发过程。它通过‘约定优于配置’的理念,解决了传统 Spring 开发中繁琐的 XML 配置和复杂的依赖冲突问题。”

  • 起步依赖 (Starter)

    “它提供了很多‘开箱即用’的 Starter 包。比如想写 Web,引入 spring-boot-starter-web 即可,它会自动帮你把 Spring MVC、Tomcat、Jackson 等所有需要的依赖全部集成好,解决了依赖版本冲突的问题。”

  • 自动配置 (Auto-Configuration)

    “这是 Spring Boot 的灵魂。它会根据类路径下的 Jar 包自动装配 Bean。比如发现有 MySQL 驱动,它就自动帮你配置好数据源,极大地减少了手动写配置代码的工作量。”

  • 内嵌容器

    “它内置了 Tomcat、Jetty 等服务器。应用可以直接打包成一个可执行的 Jar 包,通过 java -jar 直接运行,不再需要额外部署复杂的 Tomcat 环境,非常适合微服务架构。”

  • 辅助功能 (Actuator)

    “它自带监控和管理功能,可以很方便地查看应用的运行状态、内存堆栈、健康检查等,生产环境非常实用。”

2.SpringBoot用到哪些设计模式?

16.spring框架中都用到了哪些设计模式

3.怎么理解SpringBoot中的约定大于配置

“约定大于配置是指 Spring Boot 预先设定了一套标准的默认值。开发者只要遵循这些标准,就可以零配置启动项目。只有当默认配置不满足业务需求时,才需要手动编写配置文件去覆盖它。”

面试时可以用这个比喻来突出优势:

  • 传统 Spring(手动挡): 像配电脑,你需要手动配置数据库连接池、视图解析器、事务管理等每一个零件(XML 或 JavaConfig),稍有配错就无法启动。

  • Spring Boot(自动挡): 像买品牌整机,它约定了:

    • 目录约定:静态资源放 static,模板放 templates

    • 依赖约定:引入 web-starter 就默认你用了 Tomcat 和 Spring MVC。

    • 配置约定:只要你在 pom.xml 里引用了某个 Starter,Spring Boot 就认为你想要用它,并自动帮你初始化好所有 Bean。

4.SpringBoot的项目结构是怎么样的?

5.SpringBoot自动装配原理是什么?

“自动配置是指 Spring Boot 在启动时,会根据 Classpath 类路径下的 Jar 包和配置条件,自动将业务需要的 Bean 装载到 IOC 容器中,免去了开发者手动写配置类的麻烦。”

“简单来说,自动配置的逻辑就是:‘启动扫描文件’ + ‘按需条件判断’。它通过这种机制实现了‘开箱即用’,让开发者只需要引入一个 Starter,相关功能就能自动生效。”

6.说几个启动器(starter)?

“Starter 是一组依赖描述符的集合。它将实现某一特定功能所需的全部 Jar 包和相关配置打包在一起,开发者只需引入一个依赖,就能通过自动装配开启对应功能。”

  • spring-boot-starter-web:用于构建 Web 应用。它集成了 Spring MVC、Tomcat 容器、Jackson JSON 处理等核心组件。

  • spring-boot-starter-data-redis:用于集成 Redis。它自动配置了 RedisConnectionFactory 和常用的 RedisTemplate

  • mybatis-spring-boot-starter:这是常用的第三方 Starter。它能自动扫描 Mapper 接口,简化了 MyBatis 与 Spring 的集成配置。

  • spring-boot-starter-test:集成测试包。涵盖了 JUnit、Mockito、AssertJ 等主流测试框架。

7.写过SpringBoot starter吗?

没有

8.SpringBoot里面有哪些重要的注解?还有一个配置相关的注解是哪个?

核心启动注解:@SpringBootApplication

这是最核心的注解,它是一个复合注解,包含了三个最重要的部分:

  • @SpringBootConfiguration:标识这是一个配置类(底层就是 @Configuration)。

  • @EnableAutoConfiguration:开启自动装配机制(Spring Boot 的灵魂)。

  • @ComponentScan:自动扫描并加载当前包及其子包下的 Bean。

Spring注解

9.springboot怎么开启事务?

“在 Spring Boot 中开启事务非常简单,主要分为两步:”

  • 第一步: 在启动类(或配置类)上标注 @EnableTransactionManagement 注解。

    • 注: 实际上在 Spring Boot 中,如果你引入了 spring-boot-starter-data-jpamybatis-spring-boot-starter,这个注解通常是默认开启的,不需要手动配置。
  • 第二步: 在需要事务支持的方法或类上标注 @Transactional 注解。

方法权限@Transactional 只能标注在 public 方法上,否则无效

10.Springboot怎么做到导入就可以直接使用的?

“简单来说,它是通过 ‘读取特定目录下的配置文件’ 获取候选名单,再通过 ‘条件注解’(@Conditional 系列注解(如 @ConditionalOnClass) 过滤掉不需要的类,最终实现‘导入依赖即生效’的效果

11.SpringBoot 过滤器和拦截器说一下?

过滤器属于 Servlet 容器(如 Tomcat),是 Java Web 的标准;拦截器属于 Spring 框架,是 Spring MVC 的组成部分。简单来说,过滤器在最外层,拦截器在框架内层。”

请求进入服务器的顺序是: Filter → Servlet → Interceptor → Controller

“在实际开发中,如果涉及协议或资源层面的处理,我会放在 Filter;如果涉及业务权限或逻辑监控,我会放在 Interceptor。这种分层设计能让系统职责更加清晰。”

  • Filter:可以通过 @WebFilter 注解或 FilterRegistrationBean 注册。

  • Interceptor:需要实现 HandlerInterceptor 接口,并在 WebMvcConfigurer 中注册。