java教程技术文章
-
文章 · java教程 | 2星期前 | Java · 事务 · 代理 · spring · 排错 · java Spring事务 @Transactional TransactionTemplate 事务代理 自调用
Spring 默认 proxy 模式只拦截从代理进入的外部调用,同一个 Bean 内部的 this 自调用会绕过 @Transactional。本文用调用关系图和代码说明如何拆分服务、显式走代理、使用 TransactionTemplate,以及何时考虑 AspectJ。114 收藏 -
Java PrintService 可以列出打印服务支持的 DocFlavor,也可以判断单个文档格式是否可用。本文进一步说明如何检查文档格式与纸张等打印属性的组合约束。114 收藏 -
Java Gatherer 中只有在 integrator 不会因业务条件提前停止输入时,才适合用 Integrator.Greedy 表达契约。本文从返回值、下游信号、并行合并和边界场景说明判断方法。112 收藏 -
Java Files.probeContentType(Path) 用已安装的文件类型探测器和系统默认探测器尝试返回 MIME 类型;识别不到时返回 null,发生 I/O 问题时抛出 IOException。本文从最小写法、提供者边界和安全兜底三个方面说明如何正确使用。112 收藏 -
Java ModuleLayer 的隔离边界由 Configuration 可读图、父层关系、模块 exports/opens 和类加载器映射共同决定。本文用动态插件示例说明 OneLoader、ManyLoaders 与跨层接口设计。112 收藏 -
Java CDS 默认归档可以复用核心类元数据;固定启动命令的应用还可以用 AppCDS 动态归档覆盖应用类,从而减少启动阶段重复加载。本文给出生成、加载和排查归档失效的最小方案。112 收藏 -
ConcurrentHashMap 的 size() 返回 int,mappingCount() 返回 long。本文从返回范围、并发更新下的估算语义和业务用途三个角度说明迁移边界:大规模计数优先 mappingCount,普通展示可保留 size,严格控制逻辑不能依赖任一瞬时计数。112 收藏 -
用 ValueSource、CsvSource 和 MethodSource 组织 JUnit 5 参数化测试输入,覆盖单值、表格与动态对象场景。110 收藏 -
Java switch 表达式要求覆盖所有可能输入;当枚举分支覆盖全部已知常量时,编译器会插入隐式 default。本文从多模块服务中的状态映射场景出发,说明箭头规则、块体 yield、显式 default、null 边界以及新增枚举常量后的维护取舍。110 收藏 -
通过 Java AclFileAttributeView 读取并保序展示文件 ACL,解释主体、类型、权限和标志,区分视图不支持、读取失败与空列表,并说明有效访问权限的判断边界。110 收藏 -
用 Java ScopedValue 传递请求上下文时,绑定位置、线程边界和版本 API 是最容易出错的地方。本文给出配置示例与排查清单。107 收藏 -
Java 25 的 JEP 512 让小型程序可以省略显式 class 和传统 public static main(String[] args)。本文用一个单文件示例说明实例 main 的写法、java 与 javac 的启动命令、main 入口匹配规则,以及何时应恢复普通类声明。106 收藏 -
Java 21 的 List.reversed() 返回反向有序视图,不是副本。本文用 ArrayList 和只读 List 对比说明 set、remove、addFirst 是否会写回原集合,以及什么时候必须显式复制。105 收藏 -
Java 工具方法需要知道是谁调用了它时,可以用 StackWalker.getCallerClass() 获取调用者 Class。本文从 RETAIN_CLASS_REFERENCE 配置开始,说明 getCallerClass、walk、隐藏帧和底部调用栈异常的边界。105 收藏 -
Java ScopedValue 的内层绑定只在嵌套动态作用域中遮蔽外层值,退出后自动恢复。本文用 where、run、get、isBound 和 orElse 说明嵌套读取、异常边界、线程继承与不可变上下文的使用方法。104 收藏