博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用Scala特征(trait)的堆叠操作特性进行切面编程
阅读量:6440 次
发布时间:2019-06-23

本文共 828 字,大约阅读时间需要 2 分钟。

hot3.png

        在Java中进行切面编程,通常需要借助Spring或AspectJ等第三方类库,而在scala中,通过巧妙的使用特征(trait)可以实现部分AOP的效果。比如我有这样一个操作:

trait Service{    def doAction(): Unit }

我希望在doAction的之前和之后做一些额外的操作(比如记录日志,权限控制等),下面我定义了liang

trait BeforeServiceAspect extends Service{    abstract override def doAction(): Unit = {        println("before doAction ... " )        super.doAction();    }}trait AfterServiceAspect extends Service{    abstract override def doAction(): Unit = {        super.doAction();        println("after doAction ... ");            } }class ServiceImpl extends Service{    override def doAction(){        println("do job");    }}

    然后我们可以这样 实例化:

val s = new ServiceImpl with  BeforeServiceAspect with AfterServiceAspect

   你会发现当执行s.doAction的时候会打印出:

before doAction ...
do job
after doAction ...

这就是利用了trait的堆叠特性。

 

转载于:https://my.oschina.net/aiguozhe/blog/35250

你可能感兴趣的文章
PyODPS开发中的最佳实践
查看>>
java9系列(四)Process API更新
查看>>
小知识九、常见问题
查看>>
什么仇什么怨?游戏上线日程序员“锁库跑路”,致公司破产解散
查看>>
Vue.js开发常见问题
查看>>
解析分布式锁之Zookeeper实现(一)
查看>>
多迪就业数据显示:Java和Php哪个更利于就业?更有前景?
查看>>
Android-用style修改AlertDialog修改按钮文字颜色
查看>>
HBase Major Compaction 原理精讲与参数设置建议剖析
查看>>
React全家桶构建一款Web音乐App实战(六):排行榜及歌曲本地持久化
查看>>
Android ORM 框架:GreenDao 使用详解(基础篇)
查看>>
这次给大家带来复杂点的ajax请求该如何破?
查看>>
如果你的网站没有JavaScript
查看>>
Android跨进程组件IPCInvoker用法完全解析
查看>>
JAVA集合(二、LinkHashMap)
查看>>
前端性能优化
查看>>
安卓手机软键盘弹出后不响应onKeyDown、onBackPressed方法解决方案
查看>>
Nginx-RTMP推流(audio)
查看>>
iOS性能优化 - 工具Instruments之CoreAnimation
查看>>
linux性能优化学习笔记-pidstat
查看>>