编程语言
首页 > 编程语言> > java-在每次方法调用之前使用Spring invoke方法

java-在每次方法调用之前使用Spring invoke方法

作者:互联网

在每个方法调用bean之前,有什么方法可以调用方法吗?

我在春天用硒和黄瓜.因此,所有页面都是单例,并且由于我使用@FindBy批注,因此我想在每次使用页面时调用PageFactory.initElements(driver,object).

使用标准页面对象模式,可以通过在构造函数中调用它来完成.

我要避免的是在每个方法中指定如下所示的方法:

public void clickThis() {
    PageFactory.initElements(driver, this)
    ...
}

public void clickThat() {
    PageFactory.initElements(driver, this)
    ...
}

我不想返回新页面,因为它们将无法在功能之间共享.

解决方法:

Spring具有强大的AOP支持,您可以从中受益.

解决问题所需要做的就是.

>通过添加< aop:aspectj-autoproxy />在Spring中启用方面.在您的Spring配置文件中.
>创建一个简单的类并将其注册为Aspect.

资源:

<bean id="myAspect" class="some.package.MyFirstAspect">
   <!-- possible properties ... for instance, the driver. -->
</bean>

MyFirstAspect类.请注意,该标记有@Aspect批注.在类中,您将必须创建一个方法并将其注册为@Before通知(建议在方法执行之前,之后或周围运行).

package some.package;
import org.aspectj.lang.annotation.Aspect;

@Aspect
public class MyFirstAspect {
    @Before("execution(* some.package.SomeClass.*(..))")
    public void initElements() {
        //your custom logic that has to be executed before the `clickThis`
    }
}

更多信息:

> Aspect Oriented Programming with Spring

标签:spring-aop,spring,java
来源: https://codeday.me/bug/20191030/1965224.html