欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > SpringBootDay1|面试题

SpringBootDay1|面试题

2025/5/21 17:33:05 来源:https://blog.csdn.net/qq_64392336/article/details/148097663  浏览:    关键词:SpringBootDay1|面试题

目录

一、springboot框架

1、什么是springboot

2、Spring Boot的主要优点

3、springboot核心注解

4、定义banner(springboot的logo)

5、springboot配置文件

6、springboot 整合 jdbc

二、面试题

1)springmvc的作用

​编辑

2)springmvc的核心组件

3)springmvc的内部执行流程

4)@RequestBody注解的作用

5)mvc架构模式

6)properties和yml配置文件的区别


一、springboot框架

spring(IOC、DI、AOP)
springmvc(mvc架构 属于mvc架构的控制层 ) ----> 使用了spring思想
mybatis (jdbc封装,连接数据库 增删改查)
SSM(spring+springmvc+mybatis) 一堆配置文件

spring.xml---->mybatis.xml---->sqlMapper.xml
springmvc.xml
web.xml
自己配置tomca

1、什么是springboot

其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。

2、Spring Boot的主要优点

  • Create stand-alone Spring applications

     创建独立Spring应用

  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)

     内嵌web服务器

  • Provide opinionated 'starter' dependencies to simplify your build configuration

     自动starter依赖,简化构建配置

  • Automatically configure Spring and 3rd party libraries whenever possible

     自动配置Spring以及第三方功能

  • Provide production-ready features such as metrics, health checks, and externalized configuration

     提供生产级别的监控、健康检查及外部化配置

  • Absolutely no code generation and no requirement for XML configuration

     无代码生成、无需编写XML

  • SpringBoot是整合Spring技术栈的一站式框架,SpringBoot是简化Spring技术栈的快速开发脚手架;

3、springboot核心注解

@SpringBootApplication
是springboot项目的核心注解
是一个组合注解
底层包含很多子注解
@Target({ElementType.TYPE}) 当前注解使用的位置(类上,方法上,参数上)
@Retention(RetentionPolicy.RUNTIME) 保留策略 决定注解的生命周期 编译前 运行前 运行期间
@Documented 文档注解
@Inherited 表示当前注解可以被继承
@SpringBootConfiguration 创建IOC容器
@Configuration 创建IOC容器
@EnableAutoConfiguration springboot自动装配注解(最核心注解)
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@ComponentScan 定义组件扫描的包(默认扫描当前项目启动类所在的包及其子包)

✅ @SpringBootApplication 注解详解

属性/子注解说明
作用是 Spring Boot 项目的核心注解,用于标记项目的启动类(主类),启用自动配置、组件扫描等功能。
使用位置通常标注在启动类上(即包含 main 方法的类)
是否组合注解是,是一个由多个注解组成的“合成注解”

🧩 组成 @SpringBootApplication 的核心子注解

子注解功能说明
@SpringBootConfiguration创建IOC容器表示该类是一个配置类,底层继承自 @Configuration,可以定义 Bean
@Configuration创建IOC容器告诉 Spring 容器这是一个 Java 配置类,相当于 XML 配置文件的作用
@EnableAutoConfigurationSpring Boot 自动装配的核心注解,会根据 classpath 中的依赖自动配置 Bean
@AutoConfigurationPackage将主类所在包及其子包中的 Bean 自动注册到 Spring 容器中(内部通过 @Import 实现)
@ComponentScan自动扫描并注册 Bean,默认扫描当前主类所在的包及其子包
@Import({AutoConfigurationImportSelector.class})导入自动配置类的选择器,决定了哪些自动配置类需要被加载

🔍 元注解(Meta-Annotations)

元注解含义
@Target({ElementType.TYPE})表示该注解只能用于 类级别 上(不能用在方法或参数上)
@Retention(RetentionPolicy.RUNTIME)表示该注解在运行时依然有效,可以通过反射读取
@Documented表示该注解会被包含在 Javadoc 中
@Inherited表示该注解可以被子类继承
package com.hl.springboot1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
@SpringBootApplication
是springboot项目的核心注解
是一个组合注解
底层包含很多子注解
@Target({ElementType.TYPE}) 当前注解使用的位置(类上,方法上,参数上)
@Retention(RetentionPolicy.RUNTIME) 保留策略 决定注解的生命周期 编译前 运行前 运行期间
@Documented 文档注解
@Inherited 表示当前注解可以被继承
@SpringBootConfiguration 创建IOC容器
@Configuration 创建IOC容器
@EnableAutoConfiguration springboot自动装配注解(最核心注解)
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@ComponentScan 定义组件扫描的包(默认扫描当前项目启动类所在的包及其子包)
*/
@SpringBootApplication
public class Springboot1Application {
public static void main(String[] args) {
SpringApplication.run(Springboot1Application.class, args);
}
}

4、定义banner(springboot的logo)

关于动物的ascii艺术字,自定义Spring Boot 动物 banner下载,各种有意思的banner、ascii图案,还有中文文字banner,作为Spring Boot和终端命令行banner会让项目更有意思。-bootschool.net

5、springboot配置文件

.properties配置文件

key=value

.yml配置文件

使用 : 空格 回车 tab键 进行缩

有多个配置文件,向激活特定配置文件,实现多个环境的切换
application-dev.yml
application-test.yml
application.yml

spring:profiles:active: dev

6、springboot 整合 jdbc

1)引入jar包

<!--mysql-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!--springboot整合jdbc的jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependenc

2)添加mysql连接的配置

application-dev.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/yan9username: rootpassword: 123456

3)补全包结构,搭建web层和dao层(省略service)

javaBean类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private int deptId;
private String deptName;
private String loc;
}

web层

@RestController
@RequestMapping("/dept")
public class DeptController {
//调用dao层
@Autowired
private DeptDao deptDao;
@RequestMapping("/save")
public int save(Dept dept) {
return deptDao.save(dept);
}
}

dao层

public interface DeptDao {
public int save(Dept dept);
}
@Repository
public class DeptDaoImpl implements DeptDao{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int save(Dept dept) {
//调用jdbcTemplate封装好的方法执行新增
String sql = "insert into dept(dept_name,loc) values(?,?)";
//update 执行增删改
int num = jdbcTemplate.update(sql,dept.getDeptName(),dept.getLoc());
return num;
}
}

4)测试

二、面试题

1)springmvc的作用

Spring MVC 是 Spring 框架中的一个核心模块,专门用于构建 基于 Java 的 Web 应用程序。它遵循 MVC(Model-View-Controller)设计模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三层,从而实现代码的解耦和高效协作。

  • springmvc实现的功能

  1. springmvc接收请求
  2. springmvc接收数据
  3. 返回数据给前端
  4. 页面跳转(携带数据)
  • Spring MVC 的核心作用

(1) 处理 HTTP 请求和响应

  • 作用:接收客户端(浏览器、移动端等)的 HTTP 请求,解析参数,并返回数据(如 JSON、HTML)。

  • 关键组件

    • DispatcherServlet:前端控制器,统一分发请求到对应的 Controller。

    • @Controller / @RestController:处理具体业务逻辑的控制器。

 (2) 实现 MVC 分层架构

层级职责Spring MVC 对应实现
Model封装业务数据和状态(如数据库查询结果)实体类(Entity)、DTO、Service 层返回的对象
View渲染数据(如生成 HTML、JSON、XML)JSP、Thymeleaf、FreeMarker 或直接返回 JSON(前后端分离)
Controller接收请求,调用业务逻辑,返回模型和视图@Controller 或 @RestController 类中的方法

(3) 提供灵活的请求映射和参数绑定

  • URL 路由:通过 @RequestMapping@GetMapping 等注解将请求映射到方法。

  • 参数解析

    • @RequestParam:获取 URL 查询参数。

    • @PathVariable:获取 RESTful 风格的路径参数。

    • @RequestBody:解析 JSON/XML 请求体。

    • @ModelAttribute:绑定表单数据到对象。

(4) 支持多种视图技术

  • 服务端渲染:JSP、Thymeleaf、FreeMarker。

  • 前后端分离:直接返回 JSON/XML(通过 @ResponseBody 或 @RestController)。

(5) 提供拦截器和全局异常处理

  • 拦截器(Interceptor):在请求处理前后插入逻辑(如权限校验、日志记录)。

  • 全局异常处理:通过 @ControllerAdvice 统一捕获异常,返回友好错误信息。

(6) 集成其他 Spring 功能

  • 依赖注入(DI):通过 @Autowired 管理组件依赖。

  • 事务管理:结合 @Transactional 实现数据库事务控制。

  • AOP:实现日志、权限等横切关注点。

Spring MVC 的工作流程

  1. 用户发起请求 → 请求到达 DispatcherServlet前端控制器)。

  2. DispatcherServlet 查询处理器映射HandlerMapping)→ 找到对应的 Controller 方法。

  3. 调用 Controller → 执行业务逻辑(可能调用 Service 和 Repository 层)。

  4. 返回模型和视图

    • 如果返回 String(如 "success"),ViewResolver 会解析为具体的视图(如 success.jsp)。

    • 如果返回 @ResponseBody 或 @RestController,直接序列化为 JSON/XML。

  5. 渲染响应 → 返回给客户端。

2)springmvc的核心组件

1、DispatcherServlet 前端控制器
2、HandlerMapping 处理器映射器
3、HandlerAdapter 处理器适配器
4、Handler 处理器
5、ViewResolver 视图解析器组件

3)springmvc的内部执行流程

1、浏览器发起请求: http://localhost:8080/user/getById?id=1
2、浏览器解析地址:http://     localhost    8080
3、定位到硬件服务器 ip 和 软件服务器 8080(tomcat应用)
4、通过8080----->部署的项目
5、前端控制器接收请求 解析url路径得到资源路径 /user/getById
6、前端控制器 通过调用 处理器映射器,查询 handler是否存在
7、如果路径存在,返回路径的执行链给前端控制器。如果不存在,返回404。
执行链包含了目标方法前的一系列过滤器和拦截器 目标方法路径 及后置的过滤器和拦截器。
8、前端控制器 调用处理器适配器 请求执行handler(目标方法)
9、处理器适配器封装参数到目标方法的参数中(解析httpServletRequest ,调用
request.getParameter方法)
10、执行目标handler(目标方法) 目标handler响应结果给处理器适配器(数据和视图名)
11、处理器是配置返回modelandview给前端控制器
12、前端控制器,请求视图解析器, 拼接前缀路径和后缀路径,得到完整的视图名
13、前端控制器,将model中的数据,在指定的视图页面上进行渲染
14、响应结果给前端。

4)@RequestBody注解的作用

@RequestBody 是 Spring MVC 中用于 处理 HTTP 请求体数据 的核心注解,主要作用是将请求体中的内容(如 JSON、XML)自动绑定到 Java 对象

核心作用:将 HTTP 请求体(JSON/XML)自动反序列化为 Java 对象。

5)mvc架构模式

MVC 架构 model 业务层、view 视图层、controller控制层
view 视图层:用户交互 html、css、js、vue、小程序
controller 控制层: 接收前端请求、接收前端数据、返回数据给前端 spring webmvc (web包)
model 业务层: 业务操作 service、dao、pojo

6)properties和yml配置文件的区别

.properties配置文件

key=value

.yml配置文件

使用 : 空格 回车 tab键 进行缩

有多个配置文件,向激活特定配置文件,实现多个环境的切换
application-dev.yml
application-test.yml
application.yml

spring:profiles:active: dev

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词