@DeclareParents声明对象的AOP
今天在使用@DeclareParents时,使用AspectJ拓展对象的接口
public interface Encoreable {
void nextPerformance();
}
@Component
public class DefaultEncoreablePerform implements Encoreable {
@Override
public void nextPerformance() {
System.out.println("这是一场返场表演");
}
}
public interface Performance {
public void perform(int num);
}
@Component
public class MusicPerformance implements Performance { @Override
public void perform(int num) {
if (num > 0) {
System.out.println(1 / num);
} else {
System.out.println("Concurred Exception ");
throw new NumberFormatException();
} System.out.println("精彩的表演");
}
}
@Configuration
@ComponentScan
@EnableAspectJAutoProxy
public class ConfigAop {
} @Aspect
@Component
public class AddAspectAudience { @DeclareParents(value = "Performance+", defaultImpl = DefaultEncoreablePerform.class)
public static Encoreable encoreable;
} @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = com.aop.ConfigAop.class)
public class AopAspectjTest { @Autowired
private Performance performance; @Test
public void testAop() {
performance.perform(1);
Encoreable encoreable = (Encoreable) (performance);
encoreable.nextPerformance(); } }
测试时一直提示对象不能强转,找半天找不到原因不知道为什么,暂时记一下
@DeclareParents声明对象的AOP的更多相关文章
- Spring框架学习笔记(7)——代理对象实现AOP
AOP(面向切面编程) AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming ...
- 样式声明对象:document.styleSheets[0].rules[4].style;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 深入探究Java中的对象类型变量声明操作——在声明对象时,系统究竟做了什么?
深入探究Java中的对象类型变量声明操作--在声明对象时,系统究竟做了什么? 摘要:本文主要对Java中的对象类型变量的声明的底层原理做了探究. 目录 深入探究Java中的对象类型变量声明操作--在声 ...
- 不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面元素指针
一直都喜欢这样显示窗口,因为简单高效: void MainWidget::ShowMyWindow() { MyWidget form(this); form.resize(,); form.exec ...
- javascript声明对象时 带var和不带var的区别
2015/11/25补充: 关于变量声明这里有详细的解释: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Stat ...
- AngularJS一个由于未声明对象而报的错
实现这样的一个需求:点击某个按钮,然后显示或隐藏某块区域. 先注册一个AngularJS的一个module: var myApp = angular.module("myApp", ...
- 声明对象的方式/构造函数/原型/this指向
函数的发展历程(声明函数的方式): 1.通过Object构造函数或字面量的方式创建单个对象 var obj = new Object; obj.name="新华"; o ...
- es6声明对象以及作用域与es5对比
es6声明变量: let x=1;//声明一个变量 const y=2;//声明一个只读常量,声明时必须赋值,之后值不可修改 es5声明变量: var z=3;//声明一个变量 区别: let不存在变 ...
- js声明 对象,数组 的方法
i={} 对象字面量 等同 i = new Object();i=[] 数组字面量 等同 i = new Array();
- C#在声明对象时对其赋值的一种方式
今天学会一种更方便的赋值方式,如下, 同时存档一个通过 打开对话框 获取地址的方式. private string GetSaveAsPathXls(string defaultFileName) { ...
随机推荐
- <<运算?&=、|=、 ^=、<<=、>>=的意思? 十六进制前缀是 0x。
<<运算? a<<b 表示把a转为二进制后左移b位(在后面添加 b个0).例如100的二进制表示为1100100,100左移2位后(后面加2个零):1100100<< ...
- Java基于springboot大学生宿舍寝室考勤人脸识别管理系统
简介 Java基于springboot开发的大学生寝室管理系统宿舍管理系统.学生可以查找寝室和室友信息,可以申请换寝室,申请维修,寝室长提交考勤信息(宿管确认学生考勤信息),补签,查看寝室通报,宿管信 ...
- Flink Concept Timely Stream Processing -Flink概念及时流处理
目录 介绍 时间概念:事件时间和处理时间 事件时间和水印 并行流中的水印 延迟 窗口 翻译来源- Concept Timely Stream Processing 介绍 及时的流处理是有状态流处理的扩 ...
- TinyMapper使用 对象映射框架
方便的进行对象转换,仅作使用笔记 https://www.cnblogs.com/arvinzhang/p/8282922.html 例子: var result = new List<Equi ...
- el-table实现翻页选择和回看
html <el-table ... <!-- row-key的row.id是你的行唯一标识,一般用id,翻页选的关键 --> :row-key="row => ro ...
- VUE学习-生命周期
生命周期 函数 描述 beforeCreate 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用. created 在实例创建完成后被立即 ...
- Flink 同时按照计数和时间触发窗口计算
自定义trigger 继承 抽象类 Trigger<T, TimeWindow> 主要实现 Trigger类的四个方法(onElement.onEventTime.onProcessin ...
- 杭电oj 水仙花数
Problem Description 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:"水仙花数"是指一个三位数,它的各位数字的立方和等于其本身 ...
- Ubuntu20.04 TLS 开机卡在“A start job is running for wait for network to be Configured”解决
问题: 安装ubuntu20.04 TLS系统后,开机卡在"A start job is running for wait for network to be Configured" ...
- Linux awk 替换文本字符串内容
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...