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

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

常用工具介绍

mvn repository

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

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

MyBatis

MyBatis-Plus

请参考:

代码生成器新,请参考:

SWagger

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

请参考:

分层架构

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

跨域问题

在用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 请求的便捷方法,通过设置 Origin 字段和测试跨域请求,可检查响应头中的Access-Control-Allow-Origin等信息。

maven父子工程中的依赖引用

请参考:

注解

@AliasFor注解

请参考:

@Component注解

请参考:

@Service注解

请参考:

@Configuration注解

请参考:

@Aspect 注解

请参考:

@RestControllerAdvice注解

请参考:

Actuator

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

请参考:

实体类划分

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

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

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

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

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

请参考:

Spring Security

请参考:

PageHelper分页插件

请参考:

代码自动生成

请参考:

定时任务

请参考:

部署方式

请参考:

参考链接

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

参考链接

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

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

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

参考链接

  1. phpstudy,by xp.

最近使用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拦截的作用

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

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

Web拦截的方法

请参考:

参考链接

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

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

安装

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

使用

安装 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.

什么是技术写作

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

技术写作的关键

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

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

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

技术写作的诀窍

文章采用单线结构。

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

参考链接

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

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 是一款国外开源的 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 亭子下的李子.

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.
0%