Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

SpringBoot学习笔记

发表于 2024-03-16 | 更新于 2025-04-21

Spring Boot 是一个基于 Java 的开源框架,用于以最小的工作量编写独立的、生产级的基于 Spring 的应用程序。Spring Boot 是 Spring Java 平台的约定优先于配置的扩展,旨在帮助在创建基于 Spring 的应用程序时最大程度地减少配置问题。

由于其易用性和健壮性,它被广泛用于构建微服务、Web 应用程序和其他基于 Java 的项目。

常用工具介绍

mvn repository

访问地址如下,用于查找Jar包

  • mvnrepository

当前很多项目使用mvn打包多模块,请参考:

  • Maven打包方式(多模块)

MyBatis

MyBatis-Plus

请参考:

  • MyBatis org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题解决

代码生成器新,请参考:

  • Mybatis Plus最新代码生成器AutoGenerator,更简单更高效!

SWagger

Swagger是一个可以根据你的代码,自动生成接口文档的一个工具,并且可以用作接口测试工具。

请参考:

  • springboot3.x集成SpringDoc Swagger3
  • 从 SpringFox 迁移到 SpringDoc

分层架构

参考SprintBoot的分层架构,可以更好的开发企业级应用。请参考:

  • Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
  • 在Spring Boot开发中使用DTO层
  • 真理大讨论:Service层的接口是不是多此一举?
  • Spring Boot中的业务层(Service)是否要创建接口,以及如果Service有多个实现类,如何让Spring知道该注入哪个Impl类的分析
  • 深入理解Spring Boot的Service层
  • 五个分层维度:Spring Boot 工程分层实战
  • 分层设计:Service 层真的需要实现接口吗?
  • 基于Spring框架的分层解耦详解

跨域问题

在用SpringBoot开发后端服务时,我们一般是提供接口给前端使用,但前端通过浏览器调我们接口时,浏览器会有个同源策略的限制,即协议,域名,端口任一不一样时都会导致跨域,这篇文章主要介绍跨域的几种常用解决方案。

具体方案请参考:

  • SpringBoot 项目解决跨域的几种方案

测试跨域问题

注意,当前以下代码无法在最新的Chrome浏览器控制台运行:

1
2
3
4
5
6
7
8
var xhr = new XMLHttpRequest()
xhr.open('GET', 'http://localhost:9090/user') // 替换请求的方法和地址
xhr.send()
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText)
}
}

可使用Postman进行跨域测试,请参考:

  • Postman 中如何进行跨域(CORS)测试?图文教程

具体原理是:跨域问题源于浏览器同源策略,Postman 提供了模拟 CORS 请求的便捷方法,通过设置 Origin 字段和测试跨域请求,可检查响应头中的Access-Control-Allow-Origin等信息。

maven父子工程中的依赖引用

请参考:

  • 一文搞懂maven父子工程中的依赖引用

注解

@AliasFor注解

请参考:

  • SpringBoot深入理解 – @AliasFor注解的作用
  • @AliasFor 注解
  • Spring Boot常用注解(一) - 声明Bean的注解

@Component注解

请参考:

  • SpringBoot - @Component注解使用详解

@Service注解

请参考:

  • Spring5:@Autowired注解、@Resource注解和@Service注解
  • Spring注解之Service详解

@Configuration注解

请参考:

  • Spring Boot 中的 @Configuration 注解

@Aspect 注解

请参考:

  • Spring Boot中的 @Aspect 注解是什么,如何使用
  • @Aspect结合案例详解(一)
  • 基于@Aspect注解实现的SpringBoot AOP源码
  • Spring Boot 自定义注解实现AOP切面织入
  • Spring Boot 使用自定义注解实现操作日志的记录
  • AOP面向切面编程@Aspect 注解用法
  • 关于切点表达式中 @annotation 用法的疑问
  • SpringBoot AOP中JoinPoint的用法和通知切点表达式
  • SpringBoot Aop 详解和多种使用场景

@RestControllerAdvice注解

请参考:

  • RestControllerAdvice注解与全局异常处理

Actuator

在Spring Boot应用中,只需要依赖组件spring-boot-starter-actuator。它提供了很多监控和管理你的Spring Boot应用的HTTP或者JMX端点,并且你可以有选择地开启和关闭部分功能。当你的Spring Boot应用中引入依赖之后,将自动拥有审计、健康检查、Metrics监控等功能。

请参考:

  • SpringBoot中集成Actuator实现监控系统运行状态

实体类划分

在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。

  • VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

  • DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。

  • DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

  • PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

请参考:

  • 实体类(VO,DO,DTO)的划分

Spring Security

请参考:

  • 秒懂SpringBoot之全网最易懂的Spring Security教程

PageHelper分页插件

请参考:

  • mybatis分页插件PageHelper使用及原理分析
  • Springboot Mybatis使用pageHelper实现分页查询

代码自动生成

请参考:

  • 使用 Velocity 模板引擎快速生成代码

定时任务

请参考:

  • 深入Quartz,更优雅地管理你的定时任务

部署方式

请参考:

  • 花5分钟过一遍jar包和war包的区别

参考链接

  1. Spring Boot,by spring.
  2. 从0开始带你手撸一套SpringBoot+Vue后台管理系统,让小白能跟着学会的项目实战,by 程序员青戈.
  3. SpringBoot 项目解决跨域的几种方案,by JK凯.
  4. springboot3.x集成SpringDoc Swagger3,by 咚咚阳.
  5. mvnrepository,by mvn.
  6. Spring中 Service和ServiceImpl的选择,by leeindex.
  7. Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程,by Leaton Lee.

Mybatis学习笔记

发表于 2024-03-12 | 更新于 2024-07-08

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

参考链接

  1. 什么是 MyBatis?,by mybatis.
  2. MyBatis教程(看这一篇就够了)入门到精通
  3. 若依前后端分离版如何集成的mybatis以及修改集成mybatisplus实现Mybatis增强,by 霸道流氓.

phpstudy简介

发表于 2024-03-10

最近接触一地方科技公司,他们使用phpstudy在Windows操作系统上部署应用,可以绿色化,无需安装,挺好用的。

phpstudy 为服务器环境提供最优配置的解决方案, 支持Web端管理,一键创建网站、FTP、数据库、SSL;安全管理,计划任务,文件管理,PHP多版本共存及切换;自带LNMP与LAMP 。

参考链接

  1. phpstudy,by xp.

FTP大文件传输之哈希验证

发表于 2024-03-02 | 更新于 2024-03-03

最近使用Filezilla下载GB级别的压缩文件时,发现文件完整性验证失败,导致压缩包无法解压。下载大文件出问题的原因是什么呢?如何解决该问题呢?下面简单探讨一下。

原因分析

根据数字通信系统的基本模型(如图1所示)可知,大文件传输失败的原因最有可能是信道存在干扰。

数字通信系统模型

图1 数字通信系统模型

解决方案

目前采用的解决方案如下:

  1. 将GB级别的文件分卷压缩,放入文件夹中。
  2. 使用HashCalculator工具对文件夹中分卷压缩包进行哈希计算,并将结果保存到文件夹中。
  3. 使用Filezilla下载整个文件夹
  4. 使用HashCalculator工具对下载的文件夹进行哈希验证,哪个分卷压缩包哈希验证不通过,就重新下载该分卷压缩包。

参考链接

  1. 数字通信系统模型(重点内容),by 通信小达人.
  2. HashCalculator,by hrpzcf.
  3. hash support?,by filezilla.
  4. Filezilla配置FTP中的坑以及出坑办法,by asdyzh.
  5. Windows certutil.exe 命令 简单举例 计算MD5与SHA1/256,by ldq_sd.

Web拦截的奇技淫巧

发表于 2024-02-24

Web拦截的作用

计算机科学领域的任何问题都可以通过增加一个中间层来解决。 —— Butler Lampson

在没有系统的控制权,不掌握系统代码的情况下,通过“非常规”(拦截) 手段来增加中间层,满足一些自定义的需求。类似于软件设计模式中的装饰模式。

Web拦截的方法

请参考:

  • Web 终极拦截技巧(全是骚操作)

参考链接

  1. Web 终极拦截技巧(全是骚操作),by 风痕 · 術&思.

Spring_Boot_CLI入门教程

发表于 2024-02-21

Spring Boot CLI 是一个命令行工具,可用于从 start.spring.io 引导新项目或对密码进行编码。

安装

手动安装,参考以下链接,下载 spring-boot-cli-3.2.2-bin.zip ,并将 spring 可执行程序文件夹添加到系统 PATH 环境变量中。

  • 3.2. Installing the Spring Boot CLI

使用

安装 CLI 后,您可以通过在命令行中键入 spring 并按 Enter 来运行它。

1
2
3
4
$ spring
$ spring help init
$ spring version
$ spring init --dependencies=web,data-jpa my-project

参考链接

  1. Spring Boot CLI,by spring.
  2. 3.2. Installing the Spring Boot CLI,by spring.

技术写作的诀窍

发表于 2024-01-27

什么是技术写作

技术写作非常重要,产品的开发、推广、维护都需要它。

技术写作的关键

技术写作的好坏,跟语文水平关系不大,更多是一个技巧问题。

因为技术写作的评价标准,不是艺术性,而是表达是否清楚明白。它不需要华丽的词藻、巧妙的比喻、深刻的感悟,只需要把问题说清楚。

把问题说清楚的关键,在于你的思想是否清楚。

技术写作的诀窍

文章采用单线结构。

所谓”单线结构”(也称”线性结构”),指的是一篇文章只说一件事,按照线性顺序进行叙述,由浅入深、循序渐进、平铺直叙、层层递进。

参考链接

  1. 科技爱好者周刊(第 288 期):技术写作的首要诀窍, 阮一峰.

MobaXterm终端远程访问工具入门

发表于 2024-01-24

MobaXterm 是一个增强型的 Windows 终端。

其为 Windows 桌面提供所有重要的 远程网络工具(SSH、X11、RDP、VNC、FTP、MOSH…)

和 Unix 命令(bash、ls、cat、sed、grep、awk、rsync…)。

参考链接

  1. MobaXterm(终端工具)下载&安装&使用教程,by 蜗牛也不慢…….
  2. 全能终端神器——MobaXterm,by 程序员良许​.
  3. 比Xshell更全能,更好用的SSH客户端神器,MobaXterm,by 大技术.

kettle入门教程

发表于 2024-01-23 | 更新于 2024-01-26

Kettle 是一款国外开源的 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

简介

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。

概念

Kettle的执行分为两个层次:Job(作业)和Transformation(转换)。

组成

  • Spoon.bat/spoon.sh:是一个图形化界面,可以让我们用图形化的方式开发转换和作业。

  • Pan.bat/pan.sh:利用Pan可以用命令行的形式调用Trans。

  • Kitchen.bat/kitchen.sh:利用Kitchen可以使用命令行调用Job。

  • Carte.bat/Carte.sh:Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。

问题

kettle连不上mysql数据库

kettle 7.1在 win7 上能正常连接mysql数据库,复制到 Win10 上反而不能连接成功。最后发现原因是 Win10 的时间设置不对,改成正常时间就能连接成功。

参考链接

  1. kettle入门实战,by Gavin.
  2. kettle的基础概念入门、下载、安装、部署,by Kettle中文网.
  3. 七十七、Kettle的简介与安装部署,by 象在舞.
  4. Kettle下载与安装教程【保姆版】,by 亭子下的李子.

Java_Web_Start技术入门教程

发表于 2024-01-21 | 更新于 2024-01-25

JavaTM Web Start 是基于 Java 技术的应用程序的一种部署解决方案。它是连接计算机和 Internet 的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序。Java Web Start 提供一次单击激活应用程序的简易方法,并保证始终运行应用程序的最新版本,从而可避免复杂的安装或升级过程。

简介

Java Web Start 技术是一种面向 Web 的应用程序部署解决方案。使用全功能应用程序替代基于 HTML 的客户软件具有多种好处:

  • 高度交互的用户界面,可与传统应用程序(如文字处理和电子表格软件)相媲美。
  • 较低的带宽需求。应用程序无须在每次单击时都与 Web 服务器进行连接,它可以缓存已经下载的信息。这样,它可以在低速连接上实现更好的交互性。
  • 支持脱机使用。

Java Web Start 启动客户机应用程序流程

图1 Java Web Start 启动客户机应用程序流程

参考链接

  1. Java Web Start 指南,by allway2.
  2. JavaTM Web Start 技术,by lemoyne.
  3. 用于部署应用程序客户机的 Java Web Start 体系结构,by ibm.
  4. [Java进阶] Swing两万字大总结一(超详细教程,这不得收藏一波),by 程序喵正在路上.
  5. Java Servlet,by wikipedia.
  6. java和 javaw 以及 javaws的区别,by bird_cat.
  7. JNLP(Java Web Start )(转) ,by 沧海一滴.
  8. Tomcat Jboss Glassfish 三种常见web容器比较,by langdashu.
  9. Java Web Start,by wikipedia.
上一页1…678…53下一页

Jack Huang

524 日志
68 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse