超好用的Spring Boot内置工具类,效率翻倍!

修正 Spring Boot 中字符串比较问题:从 != 到 equals() 的正确用法 在Spring Boot开发中,字符串比较应当使用equals()方法而非'!='来确保准确性和可靠性。本文将探讨为什么字符串比较要使用equals()方法,以及如何修复使用'!='可能带来的潜在问题。通过详细的步骤和示例,我们将了解如何发现并修复这些问题,以确保代码的正确性和稳定性。 阅读详情
最近发现同事写了不少重复的工具类,发现其中很多功能,Spring 自带的都有。于是整理了本文,希望能够帮助到大家!

断言

1. 断言是一个逻辑判断,用于检查不应该发生的情况

2. Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启

3. SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查


// 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行// 参数 message 参数用于定制异常信息。void notNull(Object object, String message)// 要求参数必须空(Null),否则抛出异常,不予『放行』。// 和 notNull() 方法断言规则相反void isNull(Object object, String message)// 要求参数必须为真(True),否则抛出异常,不予『放行』。void isTrue(boolean expression, String message)// 要求参数(List/Set)必须非空(Not Empty),否则抛出异常,不予放行void notEmpty(Collection collection, String message)// 要求参数(String)必须有长度(即,Not Empty),否则抛出异常,不予放行void hasLength(String text, String message)// 要求参数(String)必须有内容(即,Not Blank),否则抛出异常,不予放行void hasText(String text, String message)// 要求参数是指定类型的实例,否则抛出异常,不予放行void isInstanceOf(Class type, Object obj, String message)// 要求参数 `subType` 必须是参数 superType 的子类或实现类,否则抛出异常,不予放行void isAssignable(Class superType, Class subType, String message)

对象、数组、集合

ObjectUtils

1. 获取对象的基本信息


// 获取对象的类名。参数为 null 时,返回字符串:"null" String nullSafeClassName(Object obj)// 参数为 null 时,返回 0int nullSafeHashCode(Object object)// 参数为 null 时,返回字符串:"null"String nullSafeToString(boolean[] array)// 获取对象 HashCode(十六进制形式字符串)。参数为 null 时,返回 0 String getIdentityHexString(Object obj)// 获取对象的类名和 HashCode。参数为 null 时,返回字符串:"" String identityToString(Object obj)// 相当于 toString()方法,但参数为 null 时,返回字符串:""String getDisplayString(Object obj)

2. 判断工具


// 判断数组是否为空boolean isEmpty(Object[] array)// 判断参数对象是否是数组boolean isArray(Object obj)// 判断数组中是否包含指定元素boolean containsElement(Object[] array, Object element)// 相等,或同为 null时,返回 trueboolean nullSafeEquals(Object o1, Object o2)/*判断参数对象是否为空,判断标准为:    Optional: Optional.empty()       Array: length == 0CharSequence: length == 0  Collection: Collection.isEmpty()         Map: Map.isEmpty() */boolean isEmpty(Object obj)

3. 其他工具方法


// 向参数数组的末尾追加新元素,并返回一个新数组<A, O extends A> A[] addObjectToArray(A[] array, O obj)// 原生基础类型数组 --> 包装类数组Object[] toObjectArray(Object source)

StringUtils

1. 字符串判断工具


// 判断字符串是否为 null,或 ""。注意,包含空白符的字符串为非空boolean isEmpty(Object str)// 判断字符串是否是以指定内容结束。忽略大小写boolean endsWithIgnoreCase(String str, String suffix)// 判断字符串是否已指定内容开头。忽略大小写boolean startsWithIgnoreCase(String str, String prefix) // 是否包含空白符boolean containsWhitespace(String str)// 判断字符串非空且长度不为 0,即,Not Emptyboolean hasLength(CharSequence str)// 判断字符串是否包含实际内容,即非仅包含空白符,也就是 Not Blankboolean hasText(CharSequence str)// 判断字符串指定索引处是否包含一个子串。boolean substringMatch(CharSequence str, int index, CharSequence substring)// 计算一个字符串中指定子串的出现次数int countOccurrencesOf(String str, String sub)

2. 字符串操作工具


// 查找并替换指定子串String replace(String inString, String oldPattern, String newPattern)// 去除尾部的特定字符String trimTrailingCharacter(String str, char trailingCharacter) // 去除头部的特定字符String trimLeadingCharacter(String str, char leadingCharacter)// 去除头部的空白符String trimLeadingWhitespace(String str)// 去除头部的空白符String trimTrailingWhitespace(String str)// 去除头部和尾部的空白符String trimWhitespace(String str)// 删除开头、结尾和中间的空白符String trimAllWhitespace(String str)// 删除指定子串String delete(String inString, String pattern)// 删除指定字符(可以是多个)String deleteAny(String inString, String charsToDelete)// 对数组的每一项执行 trim() 方法String[] trimArrayElements(String[] array)// 将 URL 字符串进行解码String uriDecode(String source, Charset charset)

3. 路径相关工具方法


// 解析路径字符串,优化其中的 “..” String cleanPath(String path)// 解析路径字符串,解析出文件名部分String getFilename(String path)// 解析路径字符串,解析出文件后缀名String getFilenameExtension(String path)// 比较两个两个字符串,判断是否是同一个路径。会自动处理路径中的 “..” boolean pathEquals(String path1, String path2)// 删除文件路径名中的后缀部分String stripFilenameExtension(String path) // 以 “. 作为分隔符,获取其最后一部分String unqualify(String qualifiedName)// 以指定字符作为分隔符,获取其最后一部分String unqualify(String qualifiedName, char separator)

CollectionUtils

1. 集合判断工具


// 判断 List/Set 是否为空boolean isEmpty(Collection<?> collection)// 判断 Map 是否为空boolean isEmpty(Map<?,?> map)// 判断 List/Set 中是否包含某个对象boolean containsInstance(Collection<?> collection, Object element)// 以迭代器的方式,判断 List/Set 中是否包含某个对象boolean contains(Iterator<?> iterator, Object element)// 判断 List/Set 是否包含某些对象中的任意一个boolean containsAny(Collection<?> source, Collection<?> candidates)// 判断 List/Set 中的每个元素是否唯一。即 List/Set 中不存在重复元素boolean hasUniqueObject(Collection<?> collection)

2. 集合操作工具


// 将 Array 中的元素都添加到 List/Set 中<E> void mergeArrayIntoCollection(Object array, Collection<E> collection) // 将 Properties 中的键值对都添加到 Map 中<K,V> void mergePropertiesIntoMap(Properties props, Map<K,V> map)// 返回 List 中最后一个元素<T> T lastElement(List<T> list) // 返回 Set 中最后一个元素<T> T lastElement(Set<T> set) // 返回参数 candidates 中第一个存在于参数 source 中的元素<E> E findFirstMatch(Collection<?> source, Collection<E> candidates)// 返回 List/Set 中指定类型的元素。<T> T findValueOfType(Collection<?> collection, Class<T> type)// 返回 List/Set 中指定类型的元素。如果第一种类型未找到,则查找第二种类型,以此类推Object findValueOfType(Collection<?> collection, Class<?>[] types)// 返回 List/Set 中元素的类型Class<?> findCommonElementType(Collection<?> collection)

文件、资源、IO 流

FileCopyUtils

1. 输入


// 从文件中读入到字节数组中byte[] copyToByteArray(File in)// 从输入流中读入到字节数组中byte[] copyToByteArray(InputStream in)// 从输入流中读入到字符串中String copyToString(Reader in)

2. 输出


// 从字节数组到文件void copy(byte[] in, File out)// 从文件到文件int copy(File in, File out)// 从字节数组到输出流void copy(byte[] in, OutputStream out) // 从输入流到输出流int copy(InputStream in, OutputStream out) // 从输入流到输出流int copy(Reader in, Writer out)// 从字符串到输出流void copy(String in, Writer out)

ResourceUtils

1. 从资源路径获取文件


// 判断字符串是否是一个合法的 URL 字符串。static boolean isUrl(String resourceLocation)// 获取 URLstatic URL getURL(String resourceLocation) // 获取文件(在 JAR 包内无法正常使用,需要是一个独立的文件)static File getFile(String resourceLocation)

2. Resource


// 文件系统资源 D:\...FileSystemResource// URL 资源,如 file://... http://...UrlResource// 类路径下的资源,classpth:...ClassPathResource// Web 容器上下文中的资源(jar 包、war 包)ServletContextResource// 判断资源是否存在boolean exists()// 从资源中获得 File 对象File getFile()// 从资源中获得 URI 对象URI getURI()// 从资源中获得 URI 对象URL getURL()// 获得资源的 InputStreamInputStream getInputStream()// 获得资源的描述信息String getDescription()

StreamUtils

1. 输入


void copy(byte[] in, OutputStream out)int copy(InputStream in, OutputStream out)void copy(String in, Charset charset, OutputStream out)long copyRange(InputStream in, OutputStream out, long start, long end)

2. 输出


byte[] copyToByteArray(InputStream in)String copyToString(InputStream in, Charset charset)// 舍弃输入流中的内容int drain(InputStream in)

反射、AOP

ReflectionUtils

1. 获取方法


// 在类中查找指定方法Method findMethod(Class<?> clazz, String name) // 同上,额外提供方法参数类型作查找条件Method findMethod(Class<?> clazz, String name, Class<?>... paramTypes) // 获得类中所有方法,包括继承而来的Method[] getAllDeclaredMethods(Class<?> leafClass) // 在类中查找指定构造方法Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes) // 是否是 equals() 方法boolean isEqualsMethod(Method method) // 是否是 hashCode() 方法 boolean isHashCodeMethod(Method method) // 是否是 toString() 方法boolean isToStringMethod(Method method) // 是否是从 Object 类继承而来的方法boolean isObjectMethod(Method method) // 检查一个方法是否声明抛出指定异常boolean declaresException(Method method, Class<?> exceptionType)

2. 执行方法


// 执行方法Object invokeMethod(Method method, Object target) // 同上,提供方法参数Object invokeMethod(Method method, Object target, Object... args) // 取消 Java 权限检查。以便后续执行该私有方法void makeAccessible(Method method) // 取消 Java 权限检查。以便后续执行私有构造方法void makeAccessible(Constructor<?> ctor)

3. 获取字段


// 在类中查找指定属性Field findField(Class<?> clazz, String name) // 同上,多提供了属性的类型Field findField(Class<?> clazz, String name, Class<?> type) // 是否为一个 "public static final" 属性boolean isPublicStaticFinal(Field field)

4. 设置字段


// 获取 target 对象的 field 属性值Object getField(Field field, Object target) // 设置 target 对象的 field 属性值,值为 valuevoid setField(Field field, Object target, Object value) // 同类对象属性对等赋值void shallowCopyFieldState(Object src, Object dest)// 取消 Java 的权限控制检查。以便后续读写该私有属性void makeAccessible(Field field) // 对类的每个属性执行 callbackvoid doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc) // 同上,多了个属性过滤功能。void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc,                   ReflectionUtils.FieldFilter ff) // 同上,但不包括继承而来的属性void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)

AopUtils

1. 判断代理类型


// 判断是不是 Spring 代理对象boolean isAopProxy()// 判断是不是 jdk 动态代理对象isJdkDynamicProxy()// 判断是不是 CGLIB 代理对象boolean isCglibProxy()

2. 获取被代理对象的 class


// 获取被代理的目标 classClass<?> getTargetClass()

AopContext

1. 获取当前对象的代理对象


Object currentProxy()
Spring Boot入门(12):从零开始!轻松掌握Spring Boot整合MyBatis-Plus的最佳实践! 一文吃透SpringBoot整合mybatis-plus及实战演练,赶紧来学! 阅读详情

相关推荐

mysql 数据库表结构对比java工具

mysql 数据库结构对比工具 java 1.配置好两个数据库的账号密码数据库名称等信息 DbComparator db1 = new DbComparator("ip", null, "user", "password", "dbname", "47" ); DbComparator db2 = new DbComparator("ip", null, "user", "password", "dbname", "test" ); 2.调用 compare 方法 获取对比结果 ,(json格式的数据) 格式化之后如下 : { "TABLE": { //表级别的变化 新增 或者删除的表 "新增": [], "删除": [] }, "COLUMN": { //字段级别的编号的变化 "TAB_TASK_REC": { // 表明 "test - REC_MAN_ADDRESS": "VARCHAR(50)", "47 - REC_MAN_ADDRESS": "VARCHAR(300)" }, "TAB_ORDER": { "test - REC_ADDRESS": "VARCHAR(50)", "47 - REC_ADDRESS": "VARCHAR(300)" } } }

Java 比较两个字符串内容是否相等

最近在做松哥的微人事项目时,编写SpringBoot后台接口时遇到一个小问题,就是当比较两个String对象内容是否相等时,我第一次使用==没有得到预想到的结果,改成String的equals()方法就OK了。由于一直使用C和C++比较多,C++种的std::string类比较两个字符串内容是否相等时可以直接使用==操作符重载运算符。 下面是根据职位名称获取职位信息以及获取所有职位信息的后台接口代码: package org.javaboy.vhr.service; import org.javaboy.

ccf19881030的专栏 3853

西门子1500 PLC与巴鲁夫RFID实战:从硬件接线到数据读写的完整流程

本文详细介绍了西门子S7-1500 PLC与巴鲁夫RFID系统集成的完整实战流程。内容涵盖从硬件选型、接线、PROFINET网络配置,到在TIA Portal中安装GSD文件、组态设备、分配地址,再到使用标准功能块(如FB31)进行程序架构设计、实现数据读写以及错误诊断。文章重点分享了硬件连接要点、软件配置步骤、数据块管理技巧以及调试中常见问题的解决方案,为工业自动化工程师实施RFID项目提供了清晰的指导。

weixin_29161785的博客 386

Java分布式main函数启动_巧用SpringBoot优雅解决分布式限流

SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程本篇从Spring Boot、Redis应用层面来实现分布式的限流….分布式限流单机版中我们了解到 AtomicInteger、RateLimiter、Sema...

weixin_35417884的博客 218

QUIC 协议域名封堵:核心原理、关键技术与实现路径(C/C++代码实现)

随着 QUIC 协议在互联网领域的广泛应用,其基于 UDP 的传输特性与加密设计,打破了传统 TCP 协议下的域名封堵逻辑,给网络合规管理与安全防护带来新的技术难题。本文将脱离具体代码实现,聚焦 QUIC 协议域名封堵的核心原理、关键技术环节与实际落地路径,从协议特性本质出发,解析如何在遵循 RFC 9000、RFC 9001 等规范的前提下,实现对 QUIC 流量的精准域名封堵。

chen1415886044的博客 1468

从静态到动态:如何用Deformable 3DGS和4DGS实现高效动态场景建模

本文深入探讨了Deformable 3DGS和4DGS在动态场景建模中的技术突破,详细解析了这两种方法如何高效处理动态内容。Deformable 3DGS通过引入时间维度的变形场扩展传统3DGS,而4DGS则采用四维时空体素分解方法,两者均显著提升了动态场景建模的效率和质量,适用于虚拟现实、增强现实等应用场景。

weixin_29063035的博客 435

用JEP+SpringBoot进行动态公式处理计算

jep JEP是Java expression parser的简称,即java表达式分析器,Jep是一个用来转换和计算数学表达式的java库。通过这个程序包,用户可以以字符串的形式输入一个、任意的公式,然后快速地计算出结果。Jep支持用户自定义变量、常量和函数。包括许多常用的数学函数和常。 一、在pom文件中引jep的jar包: <!-- https://mvnrepository.com/artifact/org.scijava/jep --> <depende.

qq_40193787的博客 1万+

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 539

jep的使用

参考jep官网:http://www.singularsys.com/jep/ Jep Java只用几行代码解析和评估数学表达式。此程序包允许您的用户输入公式作为字符串,并立即对其进行评估。Jep支持用户定义的变量,常量和函数。包括许多常见的数学函数和常数。 那么啰嗦,说白了就是支持自定义函数,传入数据,计算出结果,而且很快,精度自己定义. 代码演示: <depe...

晓梦初醒的博客 8599

Android应用发布到Google Play的步骤和注意事项

发布Android应用到Google Play是将您的应用分享给全球用户的重要步骤。Google Play是Android平台上最大的应用分发渠道之一,使得开发者可以轻松将他们的应用推广到数百万的用户。在本篇博客中,我们将逐步介绍如何将您的Android应用发布到Google Play,同时提供详细的步骤和注意事项,以及相关的代码示例。

2201_76125261的博客 850

使用Verilog实现QR分解——嵌入式 [设计与代码]

通过Verilog的硬件描述语言,我们可以将QR分解算法实现为硬件电路,并在嵌入式系统中高效地运行。本文将介绍如何使用Verilog设计并实现QR分解算法,该算法用于将一个矩阵分解为正交矩阵Q和上三角矩阵R。具体而言,QR分解通过对矩阵的列进行正交化处理,得到正交矩阵Q,并将对应的正交化结果存储在上三角矩阵R中。该算法通过将矩阵分解为两个部分,正交矩阵Q和上三角矩阵R,实现了对矩阵的分解和变换。模块,该模块接收待分解矩阵A,并输出正交矩阵Q和上三角矩阵R。下面给出了使用Verilog实现QR分解的源代码。

CodeMaven的博客 622

SpringBoot 内置的 20 个高效工具类,助你开发效率翻倍!

本文介绍了SpringBoot内置的20个高效工具类,涵盖字符串、集合、文件、日期等常见开发需求。这些工具类来自spring-core、spring-web等模块,无需额外依赖即可使用,包括: StringUtils提供字符串判空、分割等功能 CollectionUtils处理集合操作 Assert简化参数校验 FileCopyUtils实现文件流拷贝 BeanUtils快速复制对象属性 StopWatch监控代码性能 WebUtils获取Web请求参数 HtmlUtils防止XSS攻击等。通过实用代码示例

lzq617789的博客 980

SAP_MM&FI模块-质保金标准解决方案详解

主要讲述了SAP系统质保金的标准实现方案,包含业务背景、后台配置、前台业务操作记录,以及关键点的AI解释;

风沙的博客 687

Spring Boot 9大内置神器,助力开发效率翻倍

霸道真气,绝对给力!

码刀攻城 982

基于YOLOv8的视频监控违规停车智能识别系统与应用研究

通过这个毕设,你已经从数据准备、模型训练到界面开发,完整走了一遍深度学习项目的流程。把多个停车场的监控数据整合起来,做一个区域级的停车管理平台;加入车牌识别功能,直接定位到违规车辆的车主;试试把YOLO模型再优化一下,让它在手机端也能运行,实现移动巡检。相信我,按照这个教程一步步做,你的毕设不仅能顺利完成,还能做出亮点,让答辩老师眼前一亮。要是过程中遇到什么问题,随时可以再琢磨琢磨,或者找我聊聊,咱们一起把这个毕设做成精品。

LXY_LOVE36的博客 118

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Boot + MybatisX,效率翻倍!

后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,点击Next,在下面是一些配置,我们勾选Mybatis-Plus的最新版本Mybatix-Plus 3 和 简化开发的Lombok。至此,MybatiX整合springboot的简单配置结束!

犬小哈 88

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringBoot 内置的 10 个神器,让开发效率翻倍!

Spring Boot 的这些内置功能覆盖了从开发到运维的全链路流程,合理运用这些工具,既能减少重复代码,又能提升系统的可维护性与健壮性。后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,在调试和监控阶段,记录请求的完整信息是定位问题的关键。

犬小哈 159

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

别再写JSP了!Spring Boot项目用Thymeleaf做页面开发,这5个实用技巧让你效率翻倍

本文介绍了在Spring Boot项目中使用Thymeleaf替代JSP进行页面开发的五大实用技巧。通过动静结合开发模式、模块化设计、与Spring Security深度集成、高级表达式应用以及现代化前端工作流整合,Thymeleaf显著提升了开发效率和代码可维护性,是Java Web开发的更优选择。

weixin_30599769的博客 413

SpringBoot开发者必看!这10个内置神器让开发效率翻倍!

若需封装内部通用功能,可创建自定义 Starter:在下添加编写自动配置类,利用等条件注解实现智能装配。通过@AutowiredSpring Boot 的这些内置功能覆盖了从开发到运维的全链路流程,合理运用这些工具,既能减少重复代码,又能提升系统的可维护性与健壮性。建议开发者在实际项目中根据需求灵活组合,充分发挥框架的原生优势。

IT_1024的博客 1062

效率翻倍!通义灵码 + Spring Cloud 微服务开发实战指南

本文介绍了通义灵码的安装配置及Spring Boot项目开发流程。主要内容包括:1)在IntelliJ IDEA等IDE中安装灵码插件并完成阿里云账号授权;2)使用灵码生成Spring Boot 3.2项目基础框架,包含Web、MyBatis-Plus、MySQL等依赖的pom.xml;3)配置application.yml集成Nacos、MySQL和Redis;4)基于用户表自动生成包含Entity、Mapper、Service和Controller的分层代码结构。该方案展示了如何利用灵码快速搭建企业级S

csdn_silent的博客 1025

揭秘SpringBoot:模块探究之spring-boot-devtools,让你的开发效率翻倍!

你是否曾经在开发过程中遇到过频繁重启应用的痛苦?是否因为每次修改代码后都需要漫长的等待而感到烦躁?如果你也有这样的困扰,那么今天我要向你介绍的spring-boot-devtools模块,绝对是你的救星!

Q2024107的博客 1039

SpringBoot 内置的 20 个神器,让开发效率翻倍!

嘿,老铁!还在为Spring配置焦头烂额?作为在Java圈摸爬滚打十年的老炮儿,今天给你扒20个SpringBoot藏在裤兜里的神器。这些功能就像程序员的隐形外挂,用好了直接从"996福报"进化成"朝九晚五摸鱼"——别眨眼,全是干货!

兔哥的技术 721

Spring Boot + MybatisX,效率翻倍

MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,提高开发速率。点击Next,在下面是一些配置,我们勾选Mybatis-Plus的最新版本Mybatix-Plus 3 和 简化开发的Lombok。点击Finish,我们可以看到MybatisX为我们自动生成了该表对应的实体类、Mapper文件、Service和相对应的接口。点击后我们会看到这样一个页面,我们可以在这个页面中设置需要消除的前后缀、文件存放目录等...

jj1245_的博客 274

掌握这5个Thymeleaf高级特性,让Spring Boot开发效率翻倍

掌握Spring Boot集成Thymeleaf模板的5个高级特性,提升开发效率。涵盖页面片段复用、条件渲染、国际化支持等实用技巧,适用于前后端协同开发场景,实现高效动态页面构建,值得收藏。

AlgoChat的博客 576

横空出世!IDEA最强Spring插件来了,效率翻倍!

Spring Explyt是一款专为IDEA免费版(社区版)设计的开源插件,它的核心目标是让免费版用户也能享受到在IDEA Ultimate(旗舰版)中才提供的高级Spring开发功能。该插件通过独特的“原生上下文模式”,利用Java Agent和字节码修补技术,在轻量级运行应用程序时提取真实的Bean元数据,从而提供更精准的代码补全、导航和检查功能。下面是Spring Explyt使用过程中的效果图,功能还是很强大的!如果你在使用IDEA免费版的话,不妨试试Spring Explyt。

m0_46995061的博客 852
上一篇: 这个 MySQL bug 99% 的人会踩坑!
下一篇: 重磅!腾讯正式开源 Spring Cloud Tencent,功能真心强大!
程序员职业指南
博客等级 码龄4年 2138粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值