zoukankan      html  css  js  c++  java
  • Spring入门(三)——AOP



    1. AOP

    aspect object programming ,简单来说就是把重复的代码抽取出来,然后再需要用到的地方进行切入,这里讲解基于接口的注解实现


    2. 了解

    • 关注点:即重复的代码
    • 切面:关注点形成的类
    • 切入点:被切入的方法
    • 切入点表达式:通过表达式来指定被切入的方法
    • @Component():IOC的注解实现
    • @Aspect:指定为切面类的注解
    • @Pointcut:切入点表达式注解的实现
    • @Before:前置通知

    3. 准备

    applicationContext.xml:开启注解

    <!-- 开启IOC注解的包 -->
    <context:component-scan base-package="main"></context:component-scan> 
    
    <!-- 开启AOP注解方式 -->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    

    接口 :基于接口实现,一定要写接口

    public interface UserDao {
    
        //这里写被切入的方法
    	void add();
    		
    }
    

    接口实现类

    @Component("UserDaoImp")
    public class UserDaoImp implements UserDao {
    
    	@Override
    	public void add() {
    		System.out.println("被切入的方法执行了");
    	}
    
    }
    

    切面类:重复的代码的集合类

    package main;
    
    @Component
    @Aspect
    public class Logger {
    
    	@Before("execution(* main..*(..))")
    	public void beforelogger(){
    		System.out.println("前置通知");
    	}
    	
    	@After("execution(* main..*(..))")
    	public void afterlogger(){
    		System.out.println("后置通知");
    	}
    	
    }
    
    

    4. 运行

    public static void main(String[] args) {
        
    	ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    
        //获得Bean对象要转为接口类型
        UserDao imp = (UserDao) ac.getBean("UserDaoImp");
        //执行方法
        imp.add();
    
    }
    

    结果

    前置通知
    被切入的方法执行了
    后置通知
    


  • 相关阅读:
    4. 单向循环链表
    3. 单向链表
    2. 队列的实现
    1. 时间复杂度(大O表示法)以及使用python实现栈
    Ubuntu16.04LTS安装集成开发工具IDE: CodeBlocks 和Eclipse-cdt
    Ubuntu16.04搭建各种开发环境的IDE: QT5 , CodeBlocks ,eclipse-cdt, PyCharm
    python2和python3 分别连接MySQL的代码
    面向对象基础
    文件的处理
    离散表(哈希表),深浅拷贝
  • 原文地址:https://www.cnblogs.com/Howlet/p/11983022.html
Copyright © 2011-2022 走看看