AOP的入门案例(登录时间记录)

导入坐标(pom.xml)

    
        
            javax.servlet
            javax.servlet-api
            4.0.1
            provided
        
        
        
            org.springframework
            spring-webmvc
            5.2.18.RELEASE
        
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
        
            org.springframework
            spring-jdbc
            5.2.18.RELEASE
        
        
        
            org.mybatis
            mybatis
            3.5.6
        
        
        
            org.mybatis
            mybatis-spring
            2.0.6
        
        
        
            com.alibaba
            druid
            1.2.6
        
        
        
            mysql
            mysql-connector-java
            5.1.38
        
        
        
            org.springframework
            spring-test
            5.2.18.RELEASE
            test
        
        
            junit
            junit
            4.12
            test
        
        
        
            org.projectlombok
            lombok
            1.16.10
        
        
        
            log4j
            log4j
            1.2.17
        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.9.0
        
    
连接点方法(service接口与实现类)
public interface UserService {
    public void login();
}
@Service
public class UserServiceImpl implements UserService {
    @Override
    public void login() {
        System.out.println("登录操作...");
    }
}
制作共性功能(通知类与通知,就是基于增强逻辑封装的方法)
public class MyAdvice {

   
    public void method(){
        System.out.println(new Date()+"登录...");
    }
}
创建切面类(一般都是直接在通知类上使用注解,标识当前类为切面配置类)

定义切入点

绑定切入点与通知关系(切面,在切面中完成切入点和通知的关联,通过注解实现)

//通知类必须配置成Spring管理的bean
@Component
//设置当前类为切面类类
@Aspect
public class MyAdvice {

    //设置切入点,@Pointcut注解要求配置在方法上方
    @Pointcut("execution(void com.yaorange.service.impl.UserServiceImpl.login())")
    public void pt(){}
    //设置在切入点pt()的方法执行后(不管是否出现异常)运行
    @After("pt()")
    public void method(){
        System.out.println(new Date()+"登录...");
    }
}
测试类运行代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class TeatAdvice {
    @Autowired
    private UserService userService;
    @Test
    public void login(){
        userService.login();
    }

}
运行结果:

AOP的入门案例(登录时间记录)_第1张图片

你可能感兴趣的:(java,开发语言)