用intellij 使用AOP (WorkAop类)在doHomework()方法的前后分别输出:我要开始做作业,我做完作业了 在测试类(WorkTest)中输出myself类对象,执行 doHomework()方法
时间: 2024-09-18 15:18:39 浏览: 28
在IntelliJ IDEA中使用Spring AOP(Aspect Oriented Programming)来实现在`doHomework()`方法前后分别输出特定信息以及在测试类中操作`Myself`对象并执行`doHomework()`,你需要遵循以下步骤:
1. **配置Spring AOP**:
- 首先,在项目中引入Spring AOP依赖。如果你使用的是Maven,可以在pom.xml文件中添加:
```xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<!-- 根据你的Spring版本选择合适的版本 -->
</dependency>
```
- 创建一个切面(Aspect),例如叫`LoggingAspect.java`,用于添加通知(Advice):
```java
@Component
@Aspect
public class LoggingAspect {
@Before("execution(* com.example.WorkAop.doHomework(..))")
public void beforeDoHomework(JoinPoint joinPoint) {
System.out.println("我要开始做作业");
}
@AfterReturning("execution(* com.example.WorkAop.doHomework(..))")
public void afterDoHomework(JoinPoint joinPoint, Object result) {
System.out.println("我做完作业了");
}
}
```
2. **创建Myself类**:
```java
public class Myself {
private String name;
// getters and setters...
public void doHomework() {
// your homework code here...
}
}
```
3. **在WorkAop类中使用自定义类**:
```java
public class WorkAop {
private Myself myself;
public WorkAop(Myself myself) {
this.myself = myself;
}
public void doHomework() {
myself.doHomework();
}
}
```
4. **测试类WorkTest**:
```java
@RunWith(SpringRunner.class)
@Configuration
@EnableAspectJAutoProxy
public class WorkTest {
@Autowired
private WorkAop workAop;
@Test
public void testDoHomework() {
Myself myself = new Myself(); // 创建一个实例供测试使用
workAop.setMyself(myself); // 设置到WorkAop实例中
// 执行doHomework方法
workAop.doHomework();
// 输出测试结果
System.out.println(workAop.getMyself()); // 如果需要获取myself对象
}
}
```