首页 > 代码库 > Spring AOP

Spring AOP

软件152 刘昊翰

AOP概念: Aspect-OrientedProgramming(面向切面编程)。AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理、缓存、对象池管理以及日志记录。AOP将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

1.interfaces代码:

 

package org.proxy.interfaces;

//老板接口

public interface ILaoBan {

    public void kaiHui();

}

 

2.LaoBan.java代码:

 

package org.proxy.interfaces.impl;

 

import org.proxy.interfaces.ILaoBan;

 

//接口实现类

public class LaoBan implements ILaoBan{

 

    @Override

    public void kaiHui() {

       System.out.println("--->老板要开会");

    }

}

 

3.MiShu.java代码:

 

package org.proxy.proxyClass;

import org.proxy.interfaces.ILaoBan;

 

public class MiShu implements ILaoBan{

 

    private ILaoBan laoban;

    public MiShu(ILaoBan laoban){

        this.laoban = laoban;

    }

 

    private void before() {    

        System.out.println("订机票");

        System.out.println("订酒店");

        System.out.println("送老板");

    }

    

    private void after() {

        System.out.println("订机票");

        System.out.println("退酒店");

        System.out.println("接老板");

    }

    

    @Override

    public void kaiHui() {

         before();

         laoban.kaiHui();

         after();

    }

    

}

 

4.test.java代码:

 

package test;

 

import org.proxy.interfaces.ILaoBan;

import org.proxy.interfaces.impl.LaoBan;

import org.proxy.proxyClass.MiShu;

 

public class Test {

    public static void main(String args[]){

        ILaoBan proxy_laoban = new MiShu(new LaoBan());

        proxy_laoban.kaiHui();

    }

}

 

5.运行结果如图

 技术分享

Spring AOP