当前位置: 首页 > news >正文

思途Spring学习 0804

SpringBoot 核心概念与开发实践

SpringBoot 是一个基于 Spring 框架的快速开发脚手架,通过约定大于配置的原则简化了传统 Spring 应用的初始化配置。其核心目标是整合 Spring 生态(如 SSM)并支持微服务架构开发。

控制反转(IoC)与依赖注入(DI)

Spring 框架通过 IoC 容器管理对象的生命周期,开发者通过注解声明依赖关系,容器自动完成依赖注入。

  • 字段注入:直接通过 @Autowired 注解字段,但缺乏灵活性(如无法注入不可变对象)。
  • Setter注入:通过 Setter 方法注入,支持动态修改依赖。
  • 构造器注入:推荐方式,保证依赖不可变且完全初始化,可省略 @Autowired 注解。
// 构造器注入示例
@Service
public class UserService {private final UserRepository repository;public UserService(UserRepository repository) {this.repository = repository;}
}

依赖注入注解
  • @Autowired
    • 默认按类型匹配,冲突时用 @Primary 标记首选 Bean。
    • 按名称匹配需配合 @Qualifier("beanName")
  • @Resource
    • JDK 原生注解,支持按名称(name)或类型(type)注入。
常用组件注解
  • @Component:通用组件标识。
  • @Service:业务逻辑层。
  • @Repository:数据访问层(含异常转换)。
  • @Controller/@RestController:控制层(后者默认响应 JSON)。

请求映射与参数处理

请求映射注解
  • @GetMapping@PostMapping 等:限定特定 HTTP 方法。
  • @RequestMapping:支持多方法,需手动指定 method 属性。
    @RequestMapping(value = "/list", method = RequestMethod.GET, produces = "application/json")
    

参数接收方式
  1. Servlet API 对象:如 HttpServletRequestHttpSession
  2. 基本类型/包装类:通过 @RequestParam 绑定查询参数。
    public String getUser(@RequestParam(required = false, defaultValue = "1") int id)
    

  3. 路径变量@PathVariable 提取 RESTful 风格路径参数。
    @GetMapping("/user/{id}")
    public String getUser(@PathVariable Long id)
    

  4. JavaBean 自动绑定:请求参数名与 Bean 属性匹配时自动填充。
  5. 请求域模型ModelModelMapMap 存储视图数据。
返回值处理
  • 视图名称:返回字符串默认解析为模板路径(如 Thymeleaf)。
    public String list(Model model) {model.addAttribute("users", userService.findAll());return "user/list"; // 对应模板文件 user/list.html
    }
    

  • 重定向/转发
    return "redirect:/user/list";  // 重定向
    return "forward:/user/detail"; // 转发
    

  • JSON 响应@ResponseBody@RestController 将返回值序列化为 JSON。
  • ResponseEntity:自定义响应状态码与头部。
    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {return ResponseEntity.ok().body(userService.findById(id));
    }
    


SpringBoot 整合 SSM

自动化配置
  • 启动器依赖spring-boot-starter-web(Web)、spring-boot-starter-data-jdbc(JDBC)、mybatis-spring-boot-starter(MyBatis)。
  • 约定目录src/main/resources/application.yml 替代传统 XML 配置。
示例配置
# application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/dbusername: rootpassword: 123456
mybatis:mapper-locations: classpath:mapper/*.xml

主启动类
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

通过以上实践,SpringBoot 显著简化了传统 SSM 的配置复杂度,开发者可专注于业务逻辑实现。

http://www.xdnf.cn/news/1241857.html

相关文章:

  • 【Keras学习笔记】手写识别
  • C++-异常
  • Linux84 SHELL编程:流程控制 前瞻(1)
  • 贯穿全生命周期,生成式AI正在重塑游戏行业
  • Coze Loop:开源智能体自动化流程编排平台原理与实践
  • k8s集群
  • 案件线索展示与交付项目
  • 数据结构:如何判断一个链表中是否存在环(Check for LOOP in Linked List)
  • 深度学习图像处理篇之AlexNet模型详解
  • 【PHP】对比两张图片的相似度
  • WPF 按钮背景色渐变
  • 服务器的Mysql 集群技术
  • linux下docker安装ollama
  • Petalinux快捷下载
  • 部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群
  • RabbitMQ--介绍
  • 【深度学习新浪潮】近三年零样本图像分类研发进展调研
  • 文件与目录操作命令
  • MySQL 基本操作入门指南
  • Apache IoTDB(3):时序数据库 IoTDB Docker部署实战
  • [GYCTF2020]FlaskApp
  • Nginx vs Spring Cloud Gateway:限流功能深度对比与实践指南
  • 直角坐标系里的四象限对NLP中的深层语义分析的积极影响和启示
  • spring boot开发中的资源处理等问题
  • 怎样推动AI技术在人机协同中的发展?
  • RTSP/RTMP播放器超低延迟实战:无人机远控视觉链路的工程实践
  • vue3+vue-flow制作简单可拖拽可增删改流程图
  • Qt 自动无法加载数据库为空
  • Go语言select
  • 开源的现代数据探索和可视化平台:Apache Superset 使用 Docker Compose