配置类
@Configuration
@EnableAspectJAutoProxy
public class LogConfigation {
}
注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LogAnnotation {
String value() default "";
}
切面类
@Component
@Aspect
public class LogAspect {
@Pointcut("@annotation(com.example.demo.AOP.LogAnnotation)")
public void logAspect(){
}
@Before("logAspect()")
public void beforeMethod(JoinPoint joinpoint)
{
System.out.println("前置通知");
System.out.println(joinpoint.getSignature().getName());
System.out.println(joinpoint.getSignature().getDeclaringType().getName());
}
}
服务接口
public interface HelloService {
String getHello();
}
服务实现类
@Service("HelloService")
public class HelloServiceImpl implements HelloService {
@Override
@LogAnnotation("f")
public String getHello() {
System.out.println("hello");
return "hello";
}
}
测试类
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
@RunWith(SpringRunner.class)
@WebAppConfiguration
@SpringBootTest
@Slf4j
public class test {
@Autowired
private HelloService helloService;
@Test
public void run(){
String hello = helloService.getHello();
System.out.println(hello);
}
}