Spring AOP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

源码学习之AOPSpring AOP使用

AOPSpring大法有多好约定编程

关于Spring——AOP

关于Spring——AOP

AOPspring 的AOP编程报错:[Xlint:invalidAbsoluteTypeName]error

框架 - Spring 源码一步步深入