Java17新特性之record关键字
Java17 出现的各种新特性
先介绍一下 Java17 都出现了哪些新特性
密封类
密封类(Sealed Classes)
密封类允许你控制哪些类可以继承或实现某个类或接口,提供了比访问修饰符更精细的继承控制。
12345678910111213public sealed class Shape permits Circle, Rectangle, Triangle { // 基类实现}public final class Circle extends Shape { private final double radius; // 实现细节}public final class Rectangle extends Shape { private final double width, height; // 实现细节}
模式匹配增强
在instanceof中使用模式匹配,减少了类型转换的样板代码:
12345678910// Java 17之前if (obj...
Spring Boot part6-Web开发之Web场景与静态资源
该文章较多源码分析))
Web 场景中的自动配置
如何使用 Spring Boot,进行 web 开发
Spring Boot 的 Web 开发能力,由 SpringMVC 提供,给予了 Spring MVC
自动配置的能力
一般来说,在 Spring Initliazer 中,勾选一个web starter
场景,再选上一个 Lombok 就可以了。
前面说过,Spring Boot 将会帮我们自动配置好 web
开发场景中需要的相关配置,只需要在配置文件中指定少量配置就可以运行起来了,我们只需要注意在业务代码中就可以了。
自动配置
Spring Boot 的自动配置类是其核心特性之一,通过
@EnableAutoConfiguration 注解和
AutoConfigurationImportSelector...
Spring Boot part5-日志配置
日志配置
规范:项目开发不要使用System.ut.println(),应该用日志记录信息
image-20250527110648134
简介
Spring
使用commons - logging作为内部日志,但底层日志实现是开放的。可对接其他日志框架。
spring5 及以后
commons - logging被spring直接自己写了
支持 jul,log4j2,logback。SpringBoot
提供了默认的控制台输出配置,也可以配置输出为文件。
logback 是默认使用的。Log4j 被弃用了,一般用 Log4j2
虽然日志框架很多,但是我们不用担心,使用 SpringBoot
的默认配置就能工作的很好。
虽然默认是 Logback,但 Spring Boot 也支持对接其他日志框架,如 Java
Util Logging(JUL)、Log4j2
等。不过在引入其他日志框架时,需要注意排除默认的 Logback
相关依赖,避免冲突。例如若要使用 Log4j2,需在pom.xml中添加...
Spring Boot part4-yaml语法及其配置文件的管理和比较
Yaml 语法
该部分基于菜鸟教程 https://www.runoob.com/w3cnote/yaml-intro.html
yaml 概述
YAML 是 “YAML Ain’t a Markup Language”(YAML
不是一种标记语言)的递归缩写。在开发的这种语言时,YAML
的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。
YAML
是一种人类可读的数据序列化标准,常用于配置文件、数据交换、API规范等场景。它的设计目标是既能被人类轻松阅读和编写,又能被机器有效解析。
YAML
的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 .yml,如:application.yml
。
YAML...
Spring Boot part3-Spring Boot的自动配置机制
自动配置
学习SSM整合时,需要配置 Tomcat ,配置 Spring
MVC,以及配置如何扫描包,配置字符过滤器,配置视图解析器,文件上传等。非常麻烦。而在
Spring Boot 中,存在自动配置 机制,提高开发效率。
现在,自动配置会自动配置好这些组件,容器中有什么组件,就具有什么功能
验证
123456789101112public static void main(String[] args) { //java10:局部变量类型的自动推断 var ioc = SpringApplication.run(MainApplication.class, args); //1、获取容器中所有组件的名字 String[] names = ioc.getBeanDefinitionNames(); //2、挨个遍历: // dispatcherServlet、beanNameViewResolver、characterEncodingFilter、multipartReso //...
Spring Boot part2-Spring Boot的依赖管理机制
依赖管理
依赖管理机制概述
从 Spring 转到 Spring Boot 的最重大的改变应该就是,以前整合 Spring +
MyBatis + SpringMVC
我们需要写一大堆的配置文件,堪称配置文件地狱,我们还要在 pom.xml
文件里引入各种类型的 jar 包,Mybatis 的、SpringMVC 的、Spring-aop
的,Spring-context 等等。
使用 SpringBoot
后,新建一个项目几乎不需要做任何改动,我们就可以运行起来。pom
文件里,我们只需要引入一个spring-boot-starter-web就可以,之前我们所做的一切,SpringBoot
都在底层帮我们做了。
Spring Boot 的依赖管理机制主要通过以下几个核心组件实现:
Parent POM(父 POM):提供依赖版本管理
Starter
Dependencies(启动器依赖):预配置的依赖集合
Auto-Configuration(自动配置):基于类路径自动配置
Bean
Dependency Management...
Spring Boot part1-Spring Boot框架的入门与介绍
Spring Boot开发的两大流派
image-20250524204200477
Spring Boot 从 2 开始,分为了两大流派:
响应式栈(Reactive Stack )和 Servlet 栈(Servlet Stack )。
响应式栈(Reactive Stack )
框架:Spring WebFlux ,是一个非阻塞的 Web
框架,充分利用多核下一代处理器的优势,能处理大量并发连接。
底层支持:依赖 Netty、Servlet 3.1 + 容器
,并通过响应式流适配器(Reactive Streams Adapters)实现。
相关组件
Spring Security Reactive:响应式安全组件。
Spring WebFlux:核心的响应式 Web 框架。
Spring Data Reactive Repositories:支持
Mongo、Cassandra、Redis、Couchbase、R2DBC
等数据库的响应式数据仓库。
响应式栈主要好处和特点是很好的压榨了多核心...
SpringBoot part0?INF-SpringBoot这个框架都需要学习什么
前言
本文章说是 Spring Boot 这个框架都需要学习什么,不如说是 Spring Boot
框架都有什么需要学习。
对于初学者看看了解脉络还是很可以的,对于学完的高手看看可以总结查缺。
所以,这篇文章的目标是详细与简便兼具的一个要点,详细是有些东西多的地方就相对详细,简便意思是随时浏览随时清晰,而且本文会根据我的
Spring Boot 学习持续更新。
其实 Spring Boot 这个框架东西并没有那么多,但是前提是你学习了 Spring
Framework,因为 Bean 的管理,IoC(控制反转)与
DI(依赖注入),AOP(面向切面编程),这些东西确实是有些难以理解和贴近框架底层的。
Spring Boot 框架其实不包含 ORM 框架,但是一般学的时候,好像都是带着
MyBatis 或 MyBatis-Plus, Spring Data JPA(Repository
接口、@Query等)和 JPA 规范与 Hibernate 一起学了。
Spring MVC 架构其实我是没有学的,因为感觉东西不少而且 Thymeleaf...
使用exe4j打包Java代码为可执行文件exe
前言
我最近写了一个小工具,这次写的也比较实用,所以也就更加认真,写完了考虑发布一个发行版,所以就研究怎么把
Java 代码进行打包,就看到了 exe4j 这个工具,但是使用 exe4j 工具,将 jar
打包成 exe,如果有额外配置文件,这种就不是很舒服。
虽然步骤比较长,但是打包的效果还是很不错的,很适合小型工具这种文件的打包
首先确保jar能够正常运行,然后使用exe4j工具进行转换为exe,添加相对路径的jre让他能够跟着文件夹走,也就不用依赖系统jdk环境了
博主是使用 JavaFx 的程序为大家示例的
这里给博主的项目引流一下
https://github.com/ergou10086/ErgouTreeMarkdownClearup
将 java 程序打包成 jar 包
首先我们需要把 Java 程序打包成 jar 包,打包之前确保能够正常运行
选择项目结构,Flie
—> Project Structure...
Spring Framework part10-Spring国际化详解
I18n 国际化概述
国际化也称作 i18n ,其来源是英文单词 internationalization 的首末字符
i 和 n ,18为中间的字符数。由于软件发行
可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通
过配置文件来实现的,假设要支撑两种语言,那么就需要两个版本的配置文件。
主要通过分离程序的核心逻辑与语言、区域相关的资源(如文本、日期格式、货币符号等),使程序能适应不同国家
/ 地区的语言和文化习惯。
Java国际化
Java自身是支持国际化的,java.util.Locale用于指定当前用户所属的语言环境等信息,java.util.ResourceBundle用于查找绑定对应的资源文件。Locale包含了language信息和country信息,Locale创建默认locale对象时使用的静态方法:
123456789/** * This method must be called only for creating the Locale.* * constants due to...