Skip to content

Java 基础

作者: luote (luote) · 个人主页 luote996.cn

为什么用 Java 写后端

Java 生态成熟,Spring Boot 提供大量开箱即用的企业能力。create-luote 后端要求 JDK 17,使用现代语法(如 var、文本块、record 等),但读懂脚手架代码,掌握下列基础即可。

程序结构

一个 Java 源文件通常包含:

java
package cn.luote.controller;

import cn.luote.common.result.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public Result<String> hello() {
        return Result.ok("hello luote");
    }
}
元素说明
package包名,对应目录结构
import引入其他类的全限定名
class类,面向对象的基本单元
方法类中的函数,如 hello()
注解 @Xxx给框架读的元数据,如 @RestController

基本类型与引用类型

类型示例说明
int / longint age = 18整数
booleanboolean ok = true布尔
StringString name = "luote"字符串,不可变
包装类Integer, Long可为 null,集合中常用

引用类型变量存的是对象地址;null 表示未指向任何对象,调用其方法会 NullPointerException

面向对象三要素

封装

用 private 字段 + public getter/setter 或 Lombok @Data 隐藏内部细节。脚手架实体类如 User.java 使用 Lombok 减少样板代码。

继承

子类 extends 父类,复用父类方法。Service 实现类 UserServiceImpl implements UserService实现接口,比继承更常用。

多态

接口类型引用指向实现类对象,例如:

java
UserService userService; // 注入的是 UserServiceImpl
userService.getById(1L);

Spring 依赖注入正是基于接口与实现分离。

集合框架

接口实现类场景
ListArrayList有序列表,按索引访问
SetHashSet去重集合
MapHashMap键值对,如 userId → User

遍历列表示例:

java
List<UserVO> list = userService.listUsers();
for (UserVO vo : list) {
    System.out.println(vo.getUsername());
}

Stream API 常用于过滤、映射:

java
List<Long> ids = users.stream()
    .map(User::getId)
    .toList();

异常处理

java
try {
    doSomething();
} catch (BusinessException e) {
    log.warn("业务异常: {}", e.getMessage());
    throw e;
} catch (Exception e) {
    log.error("系统异常", e);
    throw new BusinessException("操作失败");
}

脚手架用 BusinessException 表示可预期的业务错误,由 GlobalExceptionHandler 统一转成 Result 返回前端。

注解与 Lombok

常用 Lombok 注解:

注解作用
@Data生成 getter/setter/toString/equals/hashCode
@Slf4j生成日志对象 log
@RequiredArgsConstructor为 final 字段生成构造器,配合构造器注入

Spring 注解在下一章 Spring Boot 中展开。

读懂脚手架代码的最小清单

  1. 能看懂类、方法、字段、import。
  2. 知道 interfaceimplements 的区别。
  3. 会使用 List、Map 和 for-each。
  4. 理解 null 与 Optional 的空值意识。
  5. 知道异常不要吞掉,要有日志。

与 luote 脚手架的关系

路径建议阅读顺序
domain/po/User.java实体与表映射
domain/dto/LoginDTO.java接收前端 JSON
domain/vo/UserVO.java返回给前端,可脱敏
service/impl/UserServiceImpl.java业务逻辑集中处
common/exception/BusinessException.java自定义业务异常

下一章:Maven 项目管理

MIT Licensed