SpringAop定义了五种通知
MyAspect
import org.aspectj.lang.ProceedingJoinPoint;
/**
* 自定义切面MyAspect
*/
public class MyAspect {
public void before(){
System.out.println("before:在目标方法执行之前调用(前置通知)");
}
public void afterReturn(){
System.out.println("afterReturn:在方法正确执行之后执行(遇到异常不执行-后置通知)");
}
public void afterThrowing(){
System.out.println("afterThrowing:在方法遇到异常执行(异常通知)");
}
public void after(){
System.out.println("after:在方法执行之后运行,遇到异常也会执行(最终通知)");
}
public void around(ProceedingJoinPoint point) throws Throwable {
System.out.println("afterReturn:环绕之前");
point.proceed();
System.out.println("afterReturn:环绕之后");
}
}
UserServiceImpl
import com.ujiuye.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
public void login() {
System.out.println("我登录了");
System.out.println(1/0); //故意让系统出错
}
}
测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class MyTest_2 {
@Autowired
private UserService service;
@Test
public void t1() {
service.login();
}
}
正确执行:
故意让系统出错: