1. 前端数据 / 请求参数如何接收

1.1 是否需要拿前端数据?

✔ 需要业务数据(用户输入内容)

使用:

  • @RequestBody(JSON对象)
  • @RequestParam(URL参数 / 表单参数)
  • DTO(数据传输对象)

👉 本质:

用户“要做什么”


1.2 是否需要请求上下文信息?

✔ 需要用户身份 / 请求来源信息

使用:

  • HttpServletRequest

可获取:

  • IP地址
  • Header
  • Cookie
  • Session
  • 请求路径

👉 本质:

用户“是谁 + 从哪来 + 怎么来的”


1.3 是否需要控制响应行为?

✔ 需要控制返回结果 / 跳转 / Cookie

使用:

  • HttpServletResponse

可做:

  • 设置 Cookie
  • 重定向(redirect)
  • 写响应流

👉 本质:

“返回给用户什么 + 怎么返回”


1.4 三者对比总结

类型 常用对象 本质 作用
业务数据 DTO / @RequestBody / @RequestParam 用户要做什么 接收输入
请求信息 HttpServletRequest 用户是谁 + 怎么来 获取上下文
响应控制 HttpServletResponse 返回结果控制 控制输出

2. @RequiredArgsConstructor(Lombok)

@RequiredArgsConstructor(onConstructor = @__(@Autowired))

2.1 本质

👉 自动生成构造方法,并注入 final 字段

等价于:

@Autowired
public LoginController(LoginService loginService, RedisUtil redisUtil) {
    this.loginService = loginService;
    this.redisUtil = redisUtil;
}

2.2 作用

  • 自动依赖注入
  • 减少 @Autowired 代码
  • 推荐 Spring 官方方式(构造器注入)

2.3 依赖注入方式对比

方式 推荐度 特点
构造器注入(@RequiredArgsConstructor) ⭐⭐⭐⭐⭐ 最安全、不可变
@Autowired ⭐⭐⭐ 直接注入
@Resource ⭐⭐⭐ 按名称注入(JSR-250)

3. 日志系统(log vs 业务日志)

3.1 log.info()

👉 给开发 / 运维看的

系统发生了什么

用途:

  • 调试
  • 排查问题
  • 监控系统运行状态

3.2 业务操作日志(ImportantOperateLog)

importantOperateLogService.addImportantOperateLog(
    uid,
    "/login/auth",
    "用户通过oauth登录成功",
    request
);

👉 本质:

记录用户做了什么(审计日志)

用途:

  • 合规审计
  • 用户行为追踪
  • 风控分析

3.3 对比总结

类型 面向对象 作用
log.info 开发/运维 系统运行过程
业务日志 审计/业务 用户行为记录

4. StringUtils.isBlank

4.1 本质

StringUtils.isBlank(str)

判断:

  • null
  • ""
  • " "(全空格)

👉 返回 true


4.2 对比

方法 判断内容
isEmpty null + ""
isBlank null + "" + 空格

5. JDBC / MyBatis 字段类型

jdbcType = VARCHAR

👉 本质:

告诉 MyBatis:

这个字段在数据库中是什么类型


常见用途

#{name, jdbcType=VARCHAR}

作用:

  • 防止类型映射错误
  • 处理 null 值兼容问题

6. insert vs insertSelective(MyBatis Generator)

6.1 insert

👉 全字段插入

INSERT INTO table VALUES (a, b, null, d)

特点:

  • null 也会写入数据库

6.2 insertSelective

👉 只插入非 null 字段

INSERT INTO table (a, b, d) VALUES (...)

特点:

  • null 字段自动忽略
  • 使用默认值(如果数据库有)

6.3 对比总结

方法 行为
insert 全字段插入
insertSelective 只插非 null

7. SOAP 调用 LDAP(远程认证)

7.1 本质

Java → SOAP → LDAP认证系统

7.2 做什么

用远程接口验证用户名 + 密码是否正确

7.3 流程

  1. Java 构造 SOAP 请求
  2. 发送到 LDAP WebService
  3. LDAP 校验用户名密码
  4. 返回认证结果

7.4 本质理解

👉 LDAP不是数据库查询
👉 是远程认证服务(类似登录中心)


8. 总体理解模型(核心总结)

8.1 MVC请求三件套

RequestBody   → 用户输入
Request       → 用户信息
Response      → 返回控制

8.2 日志体系

log.info         → 系统运行日志
业务日志         → 用户行为记录

8.3 MyBatis 插入策略

insert             → 全量写
insertSelective    → 非空写

9. Cookie+Redirs+Token 登录体系流程图

10企业级应用系统架构图(前后端分离+微服务+云原生)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐