package com.wzk.service;
public interface AccountService {
void updateAccount();
int saveAccount();
void deleteAccount(int i);
}
package com.wzk.service.impl;
import com.wzk.service.AccountService;
import org.springframework.stereotype.Service;
@Service("accountService")
public class AccountServiceImpl implements AccountService {
@Override
public void updateAccount() {
System.out.println("执行了更新操作");
}
@Override
public int saveAccount() {
System.out.println("执行了保存操作");
return 0;
}
@Override
public void deleteAccount(int i) {
System.out.println("执行了删除操作");
}
}
package com.wzk.utils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Component("logger")
@Aspect
public class Logging {
@Pointcut("execution(* com.wzk.service.impl.AccountServiceImpl.*(..))")
private void tl(){
}
@Before("tl()")
public void beforePrintLog(){
System.out.println("前置通知Logging中的beforePrintLog方法打印了日志文件");
}
@AfterReturning("tl()")
public void afterReturning(){
System.out.println("后置通知Logging中的afterReturning方法打印了日志文件");
}
@AfterThrowing("tl()")
public void afterThrowing(){
System.out.println("异常通知Logging中的afterThrowing方法打印了日志文件");
}
@After("tl()")
public void afterPrintLog(){
System.out.println("最终通知Logging中的afterPrintLog方法打印了日志文件");
}
@Around("tl()")
public Object aroundPrintLog(ProceedingJoinPoint pjp){
Object value = null;
try{
Object[] args = pjp.getArgs();
System.out.println("Logging中的方法aroundPrintLog方法开始执行日志了。。。。前置");
value = pjp.proceed(args);
System.out.println("Logging中的方法aroundPrintLog方法开始执行日志了。。。。后置");
return value;
}catch (Throwable t){
System.out.println("Logging中的方法aroundPrintLog方法开始执行日志了。。。。异常");
throw new RuntimeException(t);
}finally {
System.out.println("Logging中的方法aroundPrintLog方法开始执行日志了。。。。最终");
}
}
}
@Configuration
@ComponentScan(basePackages="com.wzk")
@EnableAspectJAutoProxy
public class SpringConfiguration {
}