Spring AOP

Spring AOP

通过将业务逻辑从应用服务(如监控和事务管理)中分离出来。

切面:一个关注点的模块化,这个关注点可能横切多个对象。比如事务管理、权限管理、日志管理都是横切关注点。

切入点:应用切面功能的位置,也就是该调用切面类的那个方面。

通知:在切面的某个特定的切入点上执行的动作。<aop-before>切入点之前调用,<aop-after>切入点之后调用。

 

Spring AOP用到的设计模式:

装饰器模式:动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰器模式相比生成子类更为灵活。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。

    通知(Advice:切面的功能被称为“通知”,通知定义了切面是什么,何时使用。如它应该引用在某个方法被调用之前、之后、之前和之后、或是只在方法抛出一个异常时?

             连接点(Joinpoint:连接点是在程序执行过程中能够插入切面的一个点。这个点可以是方法被调用时、异常抛出时、甚至字段被编辑时。切面的代码可以通过这些点插入到程序的一般流程之中,从而添加新的行为。

             切入点(Pointcut:一个切面不是一定要通知程序里全部连接点。切入点可以缩小切面通知的连接点的范围。切入点定义了切面的“何地”使用。切入点的定义匹配要织入的一个或多个连接点。我们通常使用明确的类和方法名称,或是,利用正则表达式定义匹配的类和方法名称模板来指定这些切入点。有些AOP框架允许创建动态切入点,可以根据运行时的状态(比如方法的参数值)来应用切面。

             切面(Aspect:切面是通知和切入点的结合。通知和切入点共同定义了关于切面的全部内容--他的功能,在何时和何地完成这个功能。

             引入(Introduction:“引入”允许我们向现有的类添加新的方法和属性。(这个定义我还是不太明白)

             目标(Target:“目标”是被通知的对象。它可以是我们编写的任何一个对象或是第三方对象。如果不使用AOP,那么这个对象就只能自己处理主要的业务逻辑(保存数据)和交叉事务的逻辑(日志记录)。使用了AOP,那么这两个业务逻辑就可以分开了。目标对象只负责出路主要的业务逻辑(保存数据)。交叉事务的逻辑(日志记录)交给“通知”来处理。

             代理(Proxy):“代理”是向“目标对象”应用“通知”之后被创建的对象。对于我们来说目标对象(在应用AOP之前的对象)和代理对象(在应用AOP之后的对象)是一样的。

             织入(Weaving):“织入把切面应用到目标对象创建新代理对象过程。切面在指定的连接点(切入点)织入到目标对象。在目标对象的生命周期中有至少三个时机可以发生织入过程编译时、类加载时、运行时。

基于Spring Boot搭建的一个多功能在线学习系统的实现细节。系统分为管理员和用户两个主要模块。管理员负责视频、文件和文章资料的管理以及系统运营维护;用户则可以进行视频播放、资料下载、参与学习论坛并享受个性化学习服务。文中重点探讨了文件下载的安全性和性能优化(如使用Resource对象避免内存溢出),积分排行榜的高效实现(采用Redis Sorted Set结构),敏感词过滤机制(利用DFA算法构建内存过滤树)以及视频播放的浏览器兼容性解决方案(通过FFmpeg调整MOOV原子位置)。此外,还提到了权限管理方面自定义动态加载器的应用,提高了系统的灵活性和易用性。 适合人群:对Spring Boot有一定了解,希望深入理解其实际应用的技术人员,尤其是从事在线教育平台开发的相关从业者。 使用场景及目标:适用于需要快速搭建稳定高效的在线学习平台的企业或团队。目标在于提供一套完整的解决方案,涵盖从资源管理到用户体验优化等多个方面,帮助开发者更好地理解和掌握Spring Boot框架的实际运用技巧。 其他说明:文中不仅提供了具体的代码示例和技术思路,还分享了许多实践经验教训,对于提高项目质量有着重要的指导意义。同时强调了安全性、性能优化等方面的重要性,确保系统能够应对大规模用户的并发访问需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值