Java注解在方法之前和之后执行一些代码

我正在编写一个swing应用,当执行某些方法时,我希望有“ wait”光标。我们可以这样:

public void someMethod() {

MainUI.getInstance().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

//method code

MainUI.getInstance().setCursor(Cursor.getDefaultCursor());

}

我想要实现的是一个Java批注,该批注将在方法执行之前设置等待游标,并在执行后将其设置回正常状态。所以前面的例子看起来像这样

@WaitCursor    

public void someMethod() {

//method code

}

我怎样才能做到这一点?也欢迎提出有关解决此问题的其他方法的建议。谢谢!

PS-我们在项目中使用Google Guice,但我不知道如何使用它来解决问题。如果有人为我提供类似问题的简单示例,那将非常有帮助

回答:

您可以使用AspectJ,也可以使用带有自己的AOP的Google Guice。

具有注解方法注解的对象WaitCursor必须注入Guice。

您定义注释

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

@interface WaitCursor {}

您添加一个MethodInterceptor:

public class WaitCursorInterceptor implements MethodInterceptor {

public Object invoke(MethodInvocation invocation) throws Throwable {

// show the cursor

MainUI.getInstance().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

// execute the method annotated with `@WaitCursor`

Object result = invocation.proceed();

// hide the waiting cursor

MainUI.getInstance().setCursor(Cursor.getDefaultCursor());

return result;

}

}

并定义一个模块,在其中将拦截器绑定到具有注释的任何方法上。

public class WaitCursorModule extends AbstractModule {

protected void configure() {

bindInterceptor(Matchers.any(), Matchers.annotatedWith(WaitCursor.class), new WaitCursorInterceptor());

}

}

您可以在此页面上看到更多高级用法

以上是 Java注解在方法之前和之后执行一些代码 的全部内容, 来源链接: utcz.com/qa/435302.html

回到顶部