zoukankan      html  css  js  c++  java
  • Aop初步了解

    AOP(aspect-oriented programming)

    aspect是一种新型的模块化机制,用来描述分散在对象,类或函数中横切关注点。从关注点中分离出横切关注点是面向切面的程序设计的核心概念。分离关注点使解决特定领域问题的代码从业务逻辑中独立出来。业务逻辑的代码不在含有针对特定领域问题的代码调用,业务逻辑和特定领域问题通过切面来封装,维护。

    一、术语

    1. JoinPoints(织入点) :在应用中可能有很多个机会可以应用通知,这些机会就叫做织入点,织入点可能是正在调用的方法、正在抛出的异常或者是正在被修改的属性。
    2. Advice(通知):定义在连接点做什么,什么时候做,为切面增强提供接口。
    3. Aspect(切面):JoinPoints+Advice
    4. PointCuts(切点):切面具体执行的织入点,具体就是切面在何处执行
    5. Weaving(编织):将切面与目标对象(target object)进行连接,可以在编译期、加载期、运行期

    二、spring注解实现aop

    //被代理类
    @Component
    public class TargetObject {
    	public void test(){
    		System.out.println("target Object is running");
    	}
    }
    
    //切面类
    @Component
    @Aspect
    public class AspectMethod {
    	@Before("execution(public void demo.aspect.TargetObject.test())")
    	public void printDateStart(){
    		System.out.println("startTime:"+new Date(System.currentTimeMillis()));
    	}
    	@After("execution(public void demo.aspect.TargetObject.test())")
    	public void printDateEnd(){
    		System.out.println("endTime:"+new Date(System.currentTimeMillis()));;
    	}
    }
    
    //配置
    <?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/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
      	<context:annotation-config />
        <context:component-scan base-package="demo.aspect"/>
        <aop:aspectj-autoproxy proxy-target-class="true"/>
    </beans>
    
    //main运行类
    public class Main {
    	public static void main(String[] args) {
    		FileSystemXmlApplicationContext ac=new FileSystemXmlApplicationContext("src/main/resource/beans.xml");
    		TargetObject test=ac.getBean(TargetObject.class);
    		test.test();
    	}
    }
    

    //结果

  • 相关阅读:
    if 语句练习 身高体重问题
    阶乘
    if语句和switch语句
    Java 运算符
    Centos上把新安装的程序添加到系统环境变量的两种方法
    申请 Let’s Encrypt 泛域名证书 及 Nginx/Apache 证书配置
    Centos 6.5安装OpenSSL
    openssl version 查看openssl 版本出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory,怎么办
    ab压力测试遭遇apr_socket_recv: Connection reset by peer (104) 怎么办
    配置apache实现对网站某一目录的访问自动跳转到指定目录
  • 原文地址:https://www.cnblogs.com/yunwuzhan/p/7020100.html
Copyright © 2011-2022 走看看