创建一个Dog类,向其中加入eat()方法。使用AOP在eat()方法前后添加喝水的drink()方法,之后添加run()跑的方法。(使用XML方式或注解方式实现)
时间: 2023-06-13 08:05:53 浏览: 237
AOP修改方法的参数
4星 · 用户满意度95%
注解方式实现:
```java
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class DogAspect {
@Before("execution(* com.example.Dog.eat())")
public void drinkBefore() {
System.out.println("狗狗喝水中...");
}
@After("execution(* com.example.Dog.eat())")
public void drinkAfter() {
System.out.println("狗狗喝水完毕!");
}
@After("execution(* com.example.Dog.run())")
public void run() {
System.out.println("狗狗开始跑了!");
}
}
```
```java
@Component
public class Dog {
public void eat() {
System.out.println("狗狗正在吃饭...");
}
public void run() {
System.out.println("狗狗正在奔跑...");
}
}
```
使用XML方式实现:
```java
public class DogAspect {
public void drinkBefore() {
System.out.println("狗狗喝水中...");
}
public void drinkAfter() {
System.out.println("狗狗喝水完毕!");
}
public void run() {
System.out.println("狗狗开始跑了!");
}
}
```
```xml
<bean id="dog" class="com.example.Dog"></bean>
<bean id="dogAspect" class="com.example.DogAspect"></bean>
<aop:config>
<aop:aspect ref="dogAspect">
<aop:pointcut id="eatMethod" expression="execution(* com.example.Dog.eat())"/>
<aop:before method="drinkBefore" pointcut-ref="eatMethod"/>
<aop:after method="drinkAfter" pointcut-ref="eatMethod"/>
<aop:after method="run" pointcut="execution(* com.example.Dog.run())"/>
</aop:aspect>
</aop:config>
```
阅读全文