MethodBeforeAdvice表示是一个在方法执行之前的动作:

public class StudentAOP implements MethodBeforeAdvice {
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("通过Advice实现AOP");
    }
}

其中 args 是方法执行前得到的实参列表,target 是执行此方法的实例对象。

也需要配置 aop xml:

<bean id="student" class="org.example.entity.Student"/>
<bean id="studentAOP" class="org.example.entity.StudentAOP"/>
<aop:config>
    <aop:pointcut id="test" expression="execution(* org.example.entity.Student.study())"/>
  	<!--  这里只需要添加我们刚刚写好的advisor就可以了,注意是Bean的名字  -->
    <aop:advisor advice-ref="studentAOP" pointcut-ref="test"/>
</aop:config>

相比于 XML 方式, 我们可以获取到更多的参数,并且切换advice方法时,比如添加一个 AfterReturningAdivce 方法(在原方法返回之后执行 ) :

public class StudentAOP implements MethodBeforeAdvice, AfterReturningAdvice {
    @Override
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("通过Advice实现AOP");
    }
 
    @Override
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
        System.out.println("我是方法执行之后的结果,方法返回值为:"+returnValue);
    }
}

也不需要修改xml配置文件即可使用。