当前位置: 首页 > 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.dtcms.com/a/315111.html

相关文章:

  • Unity 实现手机端和电脑项目在局域网内通信
  • 【推荐100个unity插件】Unity 的 Hot Reload 热重载实现,加快unity程序编译速度——FastScriptReload插件
  • MySQL InnoDB 表数据结构存储方式详解
  • pathspec ‘with_def_layout‘ did not match any file(s) known to git`
  • Vue 详情header组件
  • Go语言Context
  • ISO(感光度)的工作原理
  • 接口权限(@SaCheckPermission)
  • ebaz4205矿板以太网连接不稳定问题解决方案
  • SQL基础语法(四个分类、库和表的增删改)
  • 【笔记】ROS1|6 中间人攻击移动过程【旧文转载】
  • 私有化部署即时通讯,企业专属通讯系统BeeWorks
  • 计算机网络:网络号和网络位是不是同一个意思
  • 4.5 点云表达方式——图
  • 纯前端使用ExcelJS插件导出Excel
  • 并发编程常用工具类(上):CountDownLatch 与 Semaphore 的协作应用
  • C++信息学奥赛一本通-第一部分-基础一-第一章
  • 高并发抢单系统核心实现详解:Redisson分布式锁实战
  • Swin-Transformer从浅入深详解
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • 安卓逆向(基础①-Google Pixel-Root)
  • <PhotoShop><JavaScript><脚本>基于JavaScript,利用脚本实现PS软件批量替换图片,并转换为智能对象?
  • 【拓扑序 时间倒流法】P7077 [CSP-S2020] 函数调用|省选-
  • 嵌入式开发入门——电子元器件~电容
  • RLCraft开服踩坑记录
  • 防火墙web页面练习
  • 使用AWS for PHP SDK实现Minio文件上传
  • Centos7离线安装Mysql8.0版本
  • 政务云数智化转型:灵雀云打造核心技术支撑能力
  • HarmonyOS 多屏适配最佳实践:基于 ArkUI 的响应式 UI 方案