(自用)Java学习-5.9(Thymeleaf,自动装配,自定义启动器 )

news2025/5/13 8:13:45

一、Thymeleaf 模板技术

  1. 片段定义与复用

    <!-- 声明片段 -->
    <div th:fragment="b1">...</div>
    <!-- 插入片段 -->
    <div th:insert="~{bottom :: b1}"></div>  <!-- 追加内容 -->
    <div th:replace="~{bottom :: b2}"></div> <!-- 替换当前标签 -->
    
  2. 内置对象应用

    <!-- 字符串处理 -->
    <span th:text="${#strings.substring(msg,0,3)}"/>
    <!-- 日期格式化 -->
    <td th:text="${#dates.format(user.birthday,'yyyy-MM-dd')}"></td>
    

二、SpringBoot 整合 MyBatis 全流程

  1. 依赖配置

    <!-- MyBatis Starter -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
    
  2. YML 核心配置

    mybatis:
      mapper-locations: classpath:/mappers/*.xml
      type-aliases-package: com.zxst.pojo
      configuration:
        map-underscore-to-camel-case: true
    
  3. Mapper 关联查询示例

    @Select("SELECT * FROM employee")
    @Results({
      @Result(property = "dept", column = "dept_id",
              one = @One(select = "com.zxst.mapper.DeptMapper.getInfoById"))
    })
    List<Employee> getEmpInfo();
    

三、CRUD 功能实现

  1. 增删改查实现要点
    • 新增:表单绑定对象参数
      <form th:action="@{/emp/saveEmp}" method="post">
        <input name="ename">...
      </form>
      
    • 更新:数据回显技术
      @GetMapping("/getOneEmpById")
      public String getOneEmpById(Model model, @RequestParam Integer eid) {
        model.addAttribute("one", employeeMapper.getOneById(eid));
        return "edit";
      }
      
    • 删除:参数传递
      <a th:href="@{/emp/deleteEmp(eid=${emp.eid})}">删除</a>
      

四、自动装配原理(重点)

  1. 启动器核心机制

    @SpringBootApplication
    ↓ 包含
    @EnableAutoConfiguration
    ↓ 触发
    META-INF/spring.factories中的自动配置类
    
  2. 自定义启动器开发

    • 步骤 1:定义配置属性类
      @ConfigurationProperties(prefix = "zxst")
      public class ZxstProperties { private String name; }
      
    • 步骤 2:创建自动配置类
      @Configuration
      @EnableConfigurationProperties(ZxstProperties.class)
      public class ZxstAutoConfiguration {
        @Bean
        public ZxstService zxstService() {
          return new ZxstService(properties.getName());
        }
      }
      
    • 步骤 3:注册配置到META-INF/spring.factories

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2374516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统管理与编程15:vscode与Linux连接进行shell开发

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 【1】打开vscode 【2】点击左下角连接图标 【3】输入远程连接 选择合适的操作系统 输入密码&#xff0c;就进入Linux环境的shell编程了。 在vscode下面粘贴拷贝更方便。比如 然后在v…

RabbitMQ概念详解

什么是消息队列&#xff1f; 消息队列是一种在应用程序之间传递消息的技术。它提供了一种异步通信模式&#xff0c;允许应用程序在不同的时间处理消 息。消息队列通常用于解耦应用程序&#xff0c;以便它们可以独立地扩展和修改。在消息队列中&#xff0c;消息发送者将消息发送…

linux基础操作5------(shell)

一.前言 本文来介绍一下linux的shell&#xff0c;除了最后的那个快捷键&#xff0c;其他的还是做一个了解就行了。 Shell&#xff1a; 蛋壳的意思&#xff0c;是linux中比较重要的一个概念&#xff0c;所有的命令其实都称之为shell命令。 看图解&#xff1a;shell就是内核的一…

BUUCTF 大流量分析(三) 1

BUUCTF:https://buuoj.cn/challenges 文章目录 题目描述&#xff1a;密文&#xff1a;解题思路&#xff1a;flag&#xff1a; 相关阅读 CTF Wiki BUUCTF | 大流量分析 &#xff08;一&#xff09;&#xff08;二&#xff09;&#xff08;三&#xff09; 题目描述&#xff1a; …

vLLM中paged attention算子分析

简要分析vLLM中PA的代码架构和v1与v2的区别 vLLM版本&#xff1a;0.8.4 整体结构分析 首先从torch_bindings.cpp入手分析&#xff1a; 这里可以看到vLLM向pytorch中注册了两个PA算子&#xff1a;v1和v2 其中paged_attention_v1和paged_attention_v2分别实现在csrc/attentio…

多样本整合Banksy空间聚类分析(Visium HD, Xenium, CosMx)

在空间数据分析中&#xff0c;传统的单细胞聚类算法&#xff0c;例如Seurat和Scanpy中的lovain和leiden等聚类算法&#xff0c;通常在处理空间数据时忽略了空间信息。然而&#xff0c;由于细胞状态受其周围细胞的影响&#xff0c;将转录组数据与细胞的空间信息结合起来进行聚类…

使用 OAuth 2.0 保护 REST API

使用 OAuth 2.0 保护 REST API 使用 OAuth 2.0 保护 REST API1.1 不安全的api1.2 安全默认值安全默认值Spring Security 默认值 需要对所有请求进行身份验证Servlet、过滤器和调度程序安全优势 使用所有请求的安全标头进行响应缓存标头 严格传输安全标头内容类型选项需要对所有…

解决下拉框数据提交后回显名称不对

问题背景描述 页面组件使用 antd 的 Select 组件&#xff0c;下拉框的 options 数据是动态获取的&#xff0c;基本就是有value 和 label 属性的对象数组。 提交数据后&#xff0c;我们有一个保存草稿的操作&#xff0c;支持返回或者刷新页面&#xff0c;浏览其他页面之后通过其…

lenis滑动插件的笔记

官网 lenis - npm 方法一&#xff1a;基础判断&#xff08;推荐&#xff09; 通过 Lenis 自带的 scroll 和 limit 属性直接判断&#xff1a; const lenis new Lenis()// 滚动事件监听 lenis.on(scroll, ({ scroll, limit }) > {const distanceToBottom limit - scroll…

Android Framework

Android 分区 /boot&#xff1a;存放引导程序&#xff0c;包括内核和内存操作程序。/system&#xff1a;相当于电脑 C 盘&#xff0c;存放 Android 系统及系统应用。/recovery&#xff1a;恢复分区&#xff0c;可以进入该分区进行系统恢复。/data&#xff1a;用户数据区&#…

OpenMCU(六):STM32F103开发板功能介绍

概述 距上一篇关于STM32F103的FreeRTOS博客的发布已经过去很长时间没有更新了。在这段时间内&#xff0c;大家可以看到博主发表了一系列的关于使用qemu 模拟实现STM32F103的博客&#xff0c;博主本来想借助qemu开发stm32F103相关的一些软件功能&#xff0c;博主开发出来并成功运…

Rspack:字节跳动自研 Web 构建工具-基于 Rust打造高性能前端工具链

字节跳动开源了一款采用 Rust 开发的前端模块打包工具&#xff1a;Rspack&#xff08;读音为 /ɑrspk/&#xff09;。 据介绍&#xff0c;Rspack 是一个基于 Rust 的高性能构建引擎&#xff0c;具备与 Webpack 生态系统的互操作性&#xff0c;可以被 Webpack 项目低成本集成&a…

高速系统设计实例设计分析

在上几章的内容中&#xff0c;我们从纯粹高速信号的理论分析&#xff0c;到 Cadence 工具的具体使用都做了详细的讲解和介绍。相信读者通过前面章节的学习&#xff0c;已经对高速系统的设计理念及 Cadence 相应的设计流程和工具有了一个基本的认识。但是&#xff0c;对于高速电…

查看购物车

一.查看购物车 查看购物车使用get请求。我们要查看当前用户的购物车&#xff0c;就要获取当前用户的userId字段进行条件查询。因为在用户登录时就已经将userId封装在token中了&#xff0c;因此我们只需要解析token获取userId即可&#xff0c;不需要前端再传入参数了。 Control…

开发工具分享: Web前端编码常用的在线编译器

1.OneCompiler 工具网址&#xff1a;https://onecompiler.com/ OneCompiler支持60多种编程语言&#xff0c;在全球有超过1280万用户&#xff0c;让开发者可以轻易实现代码的编写、运行和共享。 OneCompiler的线上调试功能完全免费&#xff0c;对编程语言的覆盖也很全&#x…

智启未来:新一代云MSP管理服务助力企业实现云成本管理和持续优化

在数字化转型浪潮下&#xff0c;企业纷纷寻求更高效、更经济的运营方式。随着云计算技术的深入应用&#xff0c;云成本优化已成为企业普遍关注的核心议题。 过去&#xff0c;传统云运维服务往往依赖于人力外包&#xff0c;缺乏系统性、规范性的管理&#xff0c;难以有效降低云…

window 显示驱动开发-将虚拟地址映射到内存段(二)

在将虚拟地址映射到段的一部分之前&#xff0c;视频内存管理器调用显示微型端口驱动程序的 DxgkDdiAcquireSwizzlingRange 函数&#xff0c;以便驱动程序可以设置用于访问可能重排的分配位的光圈。 驱动程序既不能将偏移量更改为访问分配的 PCI 光圈&#xff0c;也不能更改分配…

【文心智能体】使用文心一言来给智能体设计一段稳定调用工作流的提示词

&#x1f339;欢迎来到《小5讲堂》&#x1f339; &#x1f339;这是《文心智能体》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。&#x1f339; &#x1f339;温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff0…

K8S中构建双架构镜像-从零到成功

背景介绍 公司一个客户的项目使用的全信创的环境&#xff0c;服务器采用arm64的机器&#xff0c;而我们的应用全部是amd64的&#xff0c;于是需要对现在公司流水线进行arm64版本的同步镜像生成。本文介绍从最开始到最终生成双架构的全部过程&#xff0c;以及其中使用的相关配置…

c语言第一个小游戏:贪吃蛇小游戏03

我们为贪吃蛇的节点设置为一个结构体&#xff0c;构成贪吃蛇的身子的话我们使用链表&#xff0c;链表的每一个节点是一个结构体 显示贪吃蛇身子的一个节点 我们这边node就表示一个蛇的身体 就是一小节 输出结果如下 显示贪吃蛇完整身子 效果如下 代码实现 这个hasSnakeNode(…