创建一个Dog类,向其中加入eat()方法。使用 AOP在eat()方法前后添加喝水的drink()方法,之后添加run()跑的方法。(使用XML方式或注解 方式实现)相关分别建在哪些文件夹下,给出详细步骤和代码运行出结果
时间: 2023-06-14 11:05:30 浏览: 77
使用注解方式实现:
1. 创建Dog类
```
public class Dog {
public void eat() {
System.out.println("狗正在吃东西");
}
}
```
2. 创建切面类,实现AOP
```
@Aspect
@Component
public class DogAspect {
@Before("execution(* com.example.demo.Dog.eat())")
public void drink() {
System.out.println("狗正在喝水");
}
@After("execution(* com.example.demo.Dog.eat())")
public void run() {
System.out.println("狗正在跑");
}
}
```
3. 在Spring Boot主类中添加注解@EnableAspectJAutoProxy开启AOP
```
@SpringBootApplication
@EnableAspectJAutoProxy
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
4. 运行结果
```
狗正在喝水
狗正在吃东西
狗正在跑
```
使用XML方式实现:
1. 创建Dog类
```
public class Dog {
public void eat() {
System.out.println("狗正在吃东西");
}
}
```
2. 创建切面类,实现AOP
```
public class DogAspect {
public void drink() {
System.out.println("狗正在喝水");
}
public void run() {
System.out.println("狗正在跑");
}
}
```
3. 在Spring配置文件中配置切面和通知
```
<bean id="dog" class="com.example.demo.Dog"></bean>
<bean id="dogAspect" class="com.example.demo.DogAspect"></bean>
<aop:config>
<aop:aspect ref="dogAspect">
<aop:before method="drink" pointcut="execution(* com.example.demo.Dog.eat())"/>
<aop:after method="run" pointcut="execution(* com.example.demo.Dog.eat())"/>
</aop:aspect>
</aop:config>
```
4. 运行结果
```
狗正在喝水
狗正在吃东西
狗正在跑
```