• AOP管理控制日志入门


    1  首先 加入

    AspectJ和aop相关的jar包或者依赖坐标
     
    2 定义简单的业务逻辑方法,并用spring注解实例化业务组件和管理组件生命周期:
     
    3 定义切面类【用来向业务逻辑方法中添加日志或者校验】
     
    4 增加spring配置文件,并在配置文件中加入 Spring IOC 容器中启用 AspectJ 注解支持,需要在配置文件中加入<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
     
    5 测试
     
    1 加入jar包。。。。这里略
    2 业务逻辑... 下面是业务组件中的登录接口有两个行为,用户的登录和登出。 在登录和登出前 加入一些日志
    public interface Login {
    	/**
    	 * 用户登录
    	 */
    	public void login();
    	/**
    	 * 用户登出
    	 */
    	public void logout();
    }
     
    
    
    
    import org.springframework.stereotype.Service;
    
    @Service
    public class LoginImpl implements Login{
    	
    	private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    	@Override
    	public void login() {
    		   
    		System.out.println("XXX管理员 于"+sdf.format(new Date())+"  登录系统!");
    	}
    
    	@Override
    	public void logout() {
    		System.out.println("XXX管理员 于"+sdf.format(new Date())+"  登出系统!");
    	}
       
    }
    

     3 定义切面类 代码如下【前置通知】

    @Aspect
    @Component
    public class LogAspect {
        
        @Before("execution(public void com.xuanyuan.LoginImpl.*())")
        public void before(){
            System.out.println("管理员或者用户登录系统前进行校验....");
        }
    
    }

    4 配置spring配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
        <!-- 配置自动扫描的包 -->
        <context:component-scan base-package="cn.bean.service"></context:component-scan>
        
        <!-- 配置自动为匹配 aspectJ 注解的 Java 类生成代理对象 -->
        <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
        
    </beans>

    5 测试代码:

    public class Main {
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            Login login = (Login) context.getBean(Login.class);
            login.login();
            login.logout();
        }
    }

     。。。 前置通知和后置通知

    @Aspect
    @Component
    public class LogAspect {
        
        @Before("execution(public void com.xuanyuan.LoginImpl.*())")
        public void before(JoinPoint joinPoint){
            String methodName = joinPoint.getSignature().getName();
            if(methodName.equals("login"))
                System.out.println("管理员或者用户登录系统前进行校验....");
            else
                System.out.println("管理员或者用户登出系统前进行校验....");
            
        }
        @After("execution(public void com.xuanyuan.LoginImpl.*())")
        public void after(JoinPoint joinPoint){
            String methodName = joinPoint.getSignature().getName();
            if(methodName.equals("login"))
                System.out.println("管理员或者用户登录系统后进行校验....");
            else
                System.out.println("管理员或者用户登出系统后进行校验....");
        }
        
    }


  • 相关阅读:
    关于this指向思考
    (转) 那些无用的人----《人类简史》读后感
    常见数组&字符串API及其应用场景总结
    每当十一过了,总让我想起新年快了
    JavaScript笔记之数组 keyword(存储和释放&堆栈 & 按值 引用)
    关于Switch结构利用
    ios GCD同步异步
    IOS 实现TXT文本自动识别编码的方法
    iOS开发网络篇之文件下载、大文件下载、断点下载
    ios 自定义NSError
  • 原文地址:https://www.cnblogs.com/sunjiqiang/p/6617244.html
Copyright © 2020-2023  润新知