Java 后端企业级开发实战:权限控制、缓存优化与并发处理
在企业级后台管理系统中,安全性、性能与稳定性是核心考量。本文基于实际项目经验,梳理了从权限校验、Token 管理到业务层缓存策略及并发控制的完整技术链路,重点解析了 Spring AOP、Redisson 分布式锁、CompletableFuture 异步编排等关键方案的落地实践。
安全认证体系
注解式权限校验
通过自定义 @Auth 注解配合 Spring AOP 实现方法级别的权限拦截。切点表达式 @annotation(auth) 精准匹配标注了该注解的方法,将注解实例注入通知方法中,从而在方法执行前完成角色校验。
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Auth {
String[] value() default "";
}
AOP 切面负责获取当前登录用户信息,比对请求角色与注解定义的角色集合。若未通过校验,直接抛出业务异常;若通过,则放行并继续执行目标方法。
登录过滤器流程
LoginFilter 作为请求进入系统的统一关卡,支持普通用户认证与 OpenAPI 认证两种模式。
- 初始化阶段:启动时解析白名单 URL 配置(如 Swagger 接口),缓存为
PathPattern对象以提升匹配效率。 - 核心过滤:所有请求先判断是否在白名单内,若是则直接放行。否则进入认证逻辑。
- 认证分支:
- OpenAPI:校验 API Key 与 Secret,验证 Token 有效性。
- 普通用户:从 Header 解析 JWT Token,校验签名并提取用户信息存入上下文。
- 上下文清理:无论成功与否,最终在
finally块中清理 ThreadLocal 中的用户上下文,防止内存泄漏。
@Component
@WebFilter(urlPatterns = "/*")
@Slf4j
@AllArgsConstructor
public class LoginFilter implements Filter {
// ... 省略部分代码 ...
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException, ServletException {
(HttpServletRequest) servletRequest;
(HttpServletResponse) servletResponse;
httpResponse.setContentType();
{
(isWhiteList(httpRequest.getRequestURI())) {
filterChain.doFilter(servletRequest, servletResponse);
;
}
(handle(httpRequest, httpResponse)) {
filterChain.doFilter(servletRequest, servletResponse);
}
} {
LoginUserHandler.removeLoginUser();
}
}
}


