4.5.1 绑定方法参数值
你可以将传递到代理对象中的方法执行的参数值绑定到通知方法的参数。绑定方法参数值可能针对所有的通知类型。
对于这个例子,我们想要将比赛标识符值绑定到printMessageToInformMatchStarts()通知方法的参数,因此首先要给这个方法添加一个参数。但是还需要使用args()切入点指示符来指定想要绑定的方法参数。我们已经修改了MessagePrintingAspect,如代码清单4-58所示。
代码清单4-58 将比赛标识符值绑定到通知方法
|
代码清单4-58中的切入点告诉Spring AOP,要将连接点的第一个参数值绑定到printMessage- ToInformMatchStarts()通知方法的唯一参数。当这个通知方法被执行时,它的参数将包含被传递给代理对象中startMatch()方法执行的值。
注意下列关于代码清单4-58中切入点和通知方法的内容。
我们在execution()切入点指示符中保留了静态的参数选择。记住execution()使用静态的方法签名信息,而args()则需要一个动态的切入点。
为了避免在自动代理创建时选择过多的startMatch()方法作为能够与切入点匹配的连接点,我们添加了尽可能多的静态条件。
printMessageToInformMatchStarts()通知方法不能改变比赛标识符的值。为了改变参数值,必须使用JoinPoint对象。
将参数添加到printMessageToInformMatchStarts()通知方法时,这个参数必须由切入点绑定,因此我们必须添加args()切入点指示符。当我们添加更多的参数时,将需要改变切入点,以便这些额外的参数也将被绑定。args()切入点指示符中使用的名称必须与通知方法参数中的参数名称相匹配。
为了用XML完成这一点,你的配置文件中要添加下面的内容:
|
| 回书目 上一节 下一节 |