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用到哪些设计模式?
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。
9.springboot怎么开启事务?
“在 Spring Boot 中开启事务非常简单,主要分为两步:”
-
第一步: 在启动类(或配置类)上标注
@EnableTransactionManagement注解。- 注: 实际上在 Spring Boot 中,如果你引入了
spring-boot-starter-data-jpa或mybatis-spring-boot-starter,这个注解通常是默认开启的,不需要手动配置。
- 注: 实际上在 Spring Boot 中,如果你引入了
-
第二步: 在需要事务支持的方法或类上标注
@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中注册。