AOP设计与领域驱动设计:原理、实践与应用
1. AOP在设计与安全中的应用
在软件开发中,AOP(面向切面编程)是一种强大的编程范式,它能够有效解决横切关注点问题,如并发控制、缓存使用和安全管理等。
1.1 AOP与缓存
从日志中可以看出,方法的首次调用之后总会执行 put
操作,因为缓存中尚未包含调用结果。而在第二次调用时,值会通过键 className.method.arguments
从缓存中恢复。同时,还会显示命中次数、创建日期和最后访问时间。
1.2 AOP与安全
安全是应用程序的重要组成部分,主要涵盖两个概念:
- 认证(Authentication) :验证主体(通常是用户)身份的过程,用户通过提供凭证(如密码)来完成认证。
- 授权(Authorization) :为已认证的用户授予权限(通常是角色)的过程。用户在完成认证并获得角色后,可根据访问控制列表执行允许的操作。
在Spring Security出现之前,安全规则通常通过自定义代码、内部框架或JAAS实现。但自定义安全方案存在不足,使用广泛且不断更新的框架更为安全。而不使用AOP定义和应用安全规则会导致代码纠缠和分散,AOP应用于安全则能解决这些常见问题。
我们使用Spring Security 2.0.x(原Acegi Security System for Spring),并根据应用需求进行配置。在配置中,访问决策管理器(AccessDecisionManage